前提
プログラミング初学者で、現在WebAPIの基本について学んでいます。
API(OpenWeatherMap)を利用して、JSONで天気データ取得・日時表示の修正を行う
基本的なコードを作っています。
取得したJSONのデータからkeyを指定して、データを取り出し出力することを
目標としています。
発生している問題・エラーメッセージ
取得したJSONデータの中からkeyを指定して、ほしいデータだけを出力させようとしているのですが「key error」となってしまいます。
<ipython-input-28-a6afd89a8bbb> in <module> 16 17 ---> 18 for dat in jsondata['list']: 19 jst = str(datetime.fromtimestamp(dat["dt"], tz))[:-9] 20 weather = dat["weather"][0]["descriprion"] KeyError: 'list'
該当のソースコード
Python
import requests import json from datetime import datetime, timedelta, timezone #5日間(3時間ごと)の天気を取得する:東京url = "http://api.openweathermap.org/data/2.5/forecast?q={cityname}&appid={key}&lang=ja&units=metric"uel = url.format(cityname="Tokyo, JP", key="自分のAPIキー") #JSONデータ取得、tzの設定jsondata = requests.get(url).json()tz = timezone(timedelta(hours=+9), 'JST') #データの抽出・日時の変換for dat in jsondata['list']: jst = str(datetime.fromtimestamp(dat["dt"], tz))[:-9] weather = dat["weather"][0]["descriprion"] temp = dat["main"]["temp"] print("日時:{jst}, 天気:{w}, 気温:{t}度".format(jst=jst, w=weather, t=temp))
試したこと
keyの存在確認を以下の二種類で試みました。
①APIから取得した全データを出力してkeyを確認
②コードによるキー存在確認
<以下それぞれの詳細>
①のコード
(ネットで取得データを公開していいのか分からなかったので、ひとまず結果の記載を控えましたが、以下のコードで出力した結果、確かにキー「list」は存在していました)
import requests import json from pprint import pprint #5日間(3時間ごと)の天気を取得する:東京 url = "http://api.openweathermap.org/data/2.5/forecast?q={cityname}&appid={key}&lang=ja&units=metric" url = url.format(cityname="Tokyo, JP", key="自分のAPIキー") jsondata = requests.get(url).json() pprint(jsondata)
②のコードと結果
(該当ソースコードの、[#データの抽出・日時の変換」以下のコードを削除・下記コードを追加して実行)
print(jsondata['list'])
KeyError: 'list'
補足情報
実行環境はGoogleColaboratoryです。
0 コメント