2017-10-28 4 views
1

Ich bin noch neu in Python beim Erkunden, Lernen, und heute arbeite ich mit JSON. Wie kann ich die 'dt_txt'-Taste und den entsprechenden Wert jedes Mal, wenn er in meinem Wörterbuch erscheint, analysieren und ausdrucken? Hier ist mein Code.Parsing Daten im Wörterbuch (JSON) mit openweathermap api

import requests, pytemperature, json 

r = requests.get('http://samples.openweathermap.org/data/2.5/forecast? 
lat=35&lon=139&appid=b1b15e88fa797225412429c1c50c122a1') 
dict = r.json() 

for key, value in dict.items(): 
    if 'dt_txt' in str(key): 
     print(key) 

Hier ist JSON Snapshot oder vollständigen Inhalt in Verbindung oben.

{ 
"cod": "200", 
"message": 0.179, 
"cnt": 40, 
"list": [{ 
     "dt": 1509202800, 
     "main": { 
      "temp": 297.18, 
      "temp_min": 291.573, 
      "temp_max": 297.18, 
      "pressure": 1027.02, 
      "sea_level": 1029.75, 
      "grnd_level": 1027.02, 
      "humidity": 68, 
      "temp_kf": 5.6 
     }, 
     "weather": [{ 
       "id": 500, 
       "main": "Rain", 
       "description": "light rain", 
       "icon": "10d" 
      } 
     ], 
     "clouds": { 
      "all": 88 
     }, 
     "wind": { 
      "speed": 1.61, 
      "deg": 99.0033 
     }, 
     "rain": { 
      "3h": 0.09 
     }, 
     "sys": { 
      "pod": "d" 
     }, 
     "dt_txt": "2017-10-28 15:00:00" 
    }, { 
     "dt": 1509213600, 
     "main": { 
      "temp": 297.32, 
      "temp_min": 293.116, 
      "temp_max": 297.32, 
      "pressure": 1024.56, 
      "sea_level": 1027.16, 
      "grnd_level": 1024.56, 
      "humidity": 76, 
      "temp_kf": 4.2 
     }, 
     "weather": [{ 
       "id": 500, 
       "main": "Rain", 
       "description": "light rain", 
       "icon": "10d" 
      } 
     ], 
     "clouds": { 
      "all": 48 
     }, 
     "wind": { 
      "speed": 1.96, 
      "deg": 173.002 
     }, 
     "rain": { 
      "3h": 0.41 
     }, 
     "sys": { 
      "pod": "d" 
     }, 
     "dt_txt": "2017-10-28 18:00:00" 

Randbemerkung: Am Ende versuche ich, das Datum, die temp_min, temp_max, Haupt- und Beschreibung zu drucken. Ich werde die Temp von Kelvin nach Fahrenheit umwandeln, dann benutze ich Google Mail, um mir jeden Tag die neue Vorhersage zu schicken. Vielen Dank im Voraus für jede Hilfe!

Antwort

2

Sie können alle jeweils dict Tasten durch your_dict [ 'your_value'], versuchen Sie dies:

import requests, json 

r = requests.get('http://samples.openweathermap.org/data/2.5/forecast?lat=35&lon=139&appid=b1b15e88fa797225412429c1c50c122a1') 
dict = r.json() 
select_data = dict['list'] 

for box in select_data: 

    if 'dt_txt' in box: 
     print(box['dt_txt']) 

    else: 
     print('not found') 
+0

Danke, das genau meine Frage beantwortet. – SpaceCadet

+1

@MatthewB: so tick meine Antwort plz :) – DRPK

+0

Ich habe es ankreuzen aber Stack Überlauf sagt, ich brauche mindestens 15 Rufpunkte zu wählen. Ich würde diese Regel abstimmen, wenn ich könnte – SpaceCadet