为了账号安全,请及时绑定邮箱和手机立即绑定

将 HTML 字典转换为 PYTHON 字典

将 HTML 字典转换为 PYTHON 字典

慕村225694 2023-09-18 15:57:08
我只需要从此网站列表“ https://coronavirus-19-api.herokuapp.com/countries ”获取捷克国家的值并像变量字典一样存储在 ptyhon 中。像这样:Czechia = {"cases":434,"todayCases":0,"deaths":0,"todayDeaths":0,"recovered":3,"active":431,"critical":2}
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您可以使用requests从服务器 URL 获取 JSON 数据,然后构造一个新字典作为country键:

from requests import get


URL = "https://coronavirus-19-api.herokuapp.com/countries"


req = get(URL).json()


result = {obj['country']: {k: v for k, v in obj.items() if k != 'country'} for obj in req}


print(result)

输出:


{'China': {'cases': 80894, 'todayCases': 13, 'deaths': 3237, 'todayDeaths': 11, 'recovered': 69614, 'active': 8043, 'critical': 2622}, 'Italy': {'cases': 31506, 'todayCases': 0, 'deaths': 2503, 'todayDeaths': 0, 'recovered': 2941, 'active': 26062, 'critical': 2060}...

现在您可以在O(1)时间内访问数据,而不是进行O(N)线性扫描:


print(result["Czechia"])

# {'cases': 464, 'todayCases': 30, 'deaths': 0, 'todayDeaths': 0, 'recovered': 3, 'active': 461, 'critical': 2}

注意:确保req.status_code200 OK 或您期望从服务器收到的任何其他信息也可能是安全的。


查看完整回答
反对 回复 2023-09-18
?
慕森卡

TA贡献1806条经验 获得超8个赞

只是为您提供了使用 pythonurllib模块的另一种方法。

from urllib.request import urlopen

##import ast

import json



def Corona_Tracker():

    res = urlopen('https://coronavirus-19-api.herokuapp.com/countries')

    result = res.read().strip()

    result_str = json.loads(result)

    return result_str

if __name__ == "__main__":

    result_str=Corona_Tracker()

    while True:

        for data in result_str:

            if data['country'] == "India":

                print(data)

只需替换India为您的国家/地区,它就会给出以下输出


>>> {'country': 'India', 'cases': 148, 'todayCases': 5, 'deaths': 3, 'todayDeaths': 0, 'recovered': 14, 'active': 131, 'critical': 0}



查看完整回答
反对 回复 2023-09-18
?
白衣非少年

TA贡献1155条经验 获得超0个赞

In [1]:  import requests

   ...:  import json

   ...:

   ...:  data = requests.get('https://coronavirus-19-api.herokuapp.com/countries').json()

   ...:  result = next(item for item in data if item["country"] == "Czechia")

   ...:  print(json.dumps(result, indent=4))

{

    "country": "Czechia",

    "cases": 464,

    "todayCases": 30,

    "deaths": 0,

    "todayDeaths": 0,

    "recovered": 3,

    "active": 461,

    "critical": 2

}


In [2]:


查看完整回答
反对 回复 2023-09-18
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信