Ссылка в словаре Python - PullRequest
0 голосов
/ 10 октября 2019

Так что для школьного проекта я должен прочитать некоторые данные через API. Пока что все (вроде) работает, но когда я пытаюсь прочитать некоторые данные под несколькими ссылками, я получаю ключевые ошибки. Я не против опубликовать весь список, но он в основном на голландском языке.


import json
from urllib.request import urlopen

with urlopen("http://api.buienradar.nl/data/public/2.0/jsonfeed ") as response:
    source = response.read()

data = json.loads(source)
#pirnt(json.dumps(data, indent =2))

for item in data['actual']['stationmeasurements']:
    del item['iconurl']
    del item['graphUrl']
    station = item['stationname']
    #regio = item['regio]
    stationid = item['winddirection']
    print(station, stationid)


with open('uitlezen_buienradar.json', 'w') as f:
    json.dump(data, f , indent=2)

Это часть списка:

"$id": "1",
  "buienradar": {
    "$id": "2",
    "copyright": "(C)opyright Buienradar / RTL. Alle rechten voorbehouden",
    "terms": "Deze feed mag vrij worden gebruikt onder voorwaarde van bronvermelding buienradar.nl inclusief een hyperlink naar https://www.buienradar.nl. Aan de feed kunnen door gebruikers of andere personen geen rechten worden ontleend."
  },
  "actual": {
    "$id": "3",
    "actualradarurl": "https://api.buienradar.nl/image/1.0/RadarMapNL?w=500&h=512",
    "sunrise": "2019-10-04T07:45:00",
    "sunset": "2019-10-04T19:11:00",
    "stationmeasurements": [
      {
        "$id": "4",
        "stationid": 6391,
        "stationname": "Meetstation Arcen",
        "lat": 51.5,
        "lon": 6.2,
        "regio": "Venlo",
        "timestamp": "2019-10-04T02:30:00",
        "weatherdescription": "Zwaar bewolkt",
        "iconurl": "https://www.buienradar.nl/resources/images/icons/weather/30x30/cc.png",
        "graphUrl": "https://www.buienradar.nl/nederland/weerbericht/weergrafieken/cc",
        "winddirection": "ZO",
        "temperature": 10.0,
        "groundtemperature": 9.9,
        "feeltemperature": 9.6,
        "windgusts": 2.4,
        "windspeed": 1.5,
        "windspeedBft": 1,
        "humidity": 93.0,
        "precipitation": 0.0,
        "sunpower": 0.0,
        "rainFallLast24Hour": 4.5,
        "rainFallLastHour": 0.0,
        "winddirectiondegrees": 143

После 'iconurl' и 'graphurl'это просто извергает ошибки.

1 Ответ

1 голос
/ 10 октября 2019

Используйте dict.get (ключ), тогда не будет исключений, если ключ не существует. Неполные данные в ваших товарах;)

import json
from urllib.request import urlopen

with urlopen("http://api.buienradar.nl/data/public/2.0/jsonfeed ") as response:
    source = response.read()

data = json.loads(source)
#pirnt(json.dumps(data, indent =2))

for item in data['actual']['stationmeasurements']:
    del item['iconurl']
    del item['graphUrl']
    station = item.get('stationname')
    #regio = item['regio]
    stationid = item.get('winddirection')
    print(station, stationid)


with open('uitlezen_buienradar.json', 'w') as f:
    json.dump(data, f , indent=2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...