JSONファイルを読み込み(そして最終的には内容をデータベースに保存しようとしていますが)、以下のコードを実行するとKeyErrorが発生します。参照のためSee sample JSON。JSONファイルからdictを反復するときのPython KeyError
'durationTimeFrom'
と'durationTimeTo'
はJSONファイル内のすべての場合には存在しないキー(eventType
が80
ある場合にのみ、私は思います)。
値を読み取ろうとする前に、欠落しているキーを正しく識別する方法、および/またはキーをまだ持っていないアイテムにダミーキーを挿入する方法を教えてください。
私はすでにGoogle/StackOverflowを検索し、if key in dict:
とdict.get(key)
を試してみました。
import json
source = "feed_traffic.json" # JSON file to process
data = json.loads(open(source).read()) # Process JSON
total = data["events"]["totalCount"]
index = 0
events = data["events"]["list"][index:total]
for event in events:
eid = event["id"]
type = event['eventType']
header = event['headingText']
lat = event['latitude']
long = event['longitude']
created = event['created']
updated = event['updated']
expires = event['expireTime']
validFrom = event['durationTimeFrom']
validTo = event['durationTimeTo']
status = event['status']
# Just to check all is well, out data in console
print("Traffic Event", index, ":", eid, "-", type, "-", header, "(", long, ",", lat, ")")
index = index+1
エラーと例外処理を実装しようとしましたか? https://docs.python.org/2/tutorial/errors.html – glls
event.get( 'id')は、キーが存在しない場合はNoneを返します – Richy
'help(dict.get)'は 'D.get( k [、d]) - > D [k](Dがkの場合)、そうでなければd。デフォルトはNoneです。あなた自身のデフォルトを提供することができます。デフォルトのidを-1とすると、 'eid = event.get(" id "、-1)'となります。 – tdelaney