Конвертировать HTML словарь в PYTHON словарь - PullRequest
1 голос
/ 18 марта 2020

мне нужно получить значения только для Чехия страна из этого списка веб-сайтов "https://coronavirus-19-api.herokuapp.com/countries" и хранить как словарь переменных в ptyhon.

Как это:

Czechia = {"cases":434,"todayCases":0,"deaths":0,"todayDeaths":0,"recovered":3,"active":431,"critical":2}

Ответы [ 3 ]

2 голосов
/ 18 марта 2020

Вы можете использовать requests, чтобы получить JSON данные из URL вашего сервера, а затем создать новый словарь с 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_code - это 200 OK или все, что вы ожидаете получить от сервера.

1 голос
/ 18 марта 2020
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]:
1 голос
/ 18 марта 2020

Хотя ответы RoadRunner решают вашу проблему, я просто даю вам еще один способ сделать это, используя модуль python * urllib.

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

while True:
    result_str=Corona_Tracker()
    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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...