api.wunderground.com für meinen Raspberry

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
iop
User
Beiträge: 2
Registriert: Samstag 25. März 2017, 01:32

Hallo,
ich will mit meinem Raspberry eine Bewässerung steuern.
Jetzt scheitere ich schon beim Import der Regenwahrscheinlichkeit von api.wunderground.com.
Ich bekomme folgende Fehlermeldung:
rain = parsed_json['forecast']['simpleforecast']['forecastday']['gpf_allday']
TypeError: list indices must be integers, not str

Das ist mein Script:

Code: Alles auswählen

import urllib2
import json
f = urllib2.urlopen('http://api.wunderground.com/api/xxxxxxxxxxxxxx/q/CA/hamburg.json')
json_string = f.read()
parsed_json = json.loads(json_string)
rain = parsed_json['forecast']['simpleforecast']['forecastday']['gpf_allday']
print (rain)
Könnt ihr mir helfen?
Danke
iop
Zuletzt geändert von Anonymous am Samstag 25. März 2017, 12:37, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Na ja, die Fehlermeldung ist doch ganz aussagekräftig: In deinem komplizierten Ausdruck in der vorletzten Zeile ist mindestens ein Element kein Dictionary sondern eine Liste. Welches das ist, kann man ohne die Datenstruktur zu kennen nicht sagen. Lass sie dir doch einfach mal ausgeben (zum Beispiel mit pprint aus dem pprint modul). Dann solltest du es sehen. Alternativ kannst du den verschachtelten Zugriff testweise in einzelne zerlegen.

Edit: Laut des Beispiels in der API-Doku ist 'forecastday' eine Liste. D.h. vor 'qpf_allday' (nicht gpf), muss ein Listenindex stehen.
iop
User
Beiträge: 2
Registriert: Samstag 25. März 2017, 01:32

@nezzcarth

Vielen Dank,
Antworten