每当我尝试解析JSON文件时,我都会在Python中获得KeyError

时间:2015-11-15 01:33:30

标签: python json api google-maps keyerror

我正在使用Google Maps API 这是我的代码:

import googlemaps
import urllib2
import json

apiKey = '****************************'
url = 'https://maps.googleapis.com/maps/api/directions/json?departure_time=now&origin='
origin = raw_input("Origin ")
destination = raw_input("Destination ")
finalUrl = url + origin + '&destination=' + destination + '&key=' + apiKey

json_obj = urllib2.urlopen(finalUrl)
data = json.load(json_obj)

for item in data['routes']:
    print item['duration_in_traffic']

这是我得到的错误:

  

追踪(最近一次呼叫最后一次):

     

文件“C:/Users/Documents/python/map2.py”,第15行,

     

打印项目['duration_in_traffic']

     

KeyError:'duration_in_traffic'

我已经浏览了JSON文件,那个密钥肯定存在。

这是项目

  

{u'routes':[{u'overview_polyline':{u'points':   u'cxuyH_ |????MF @ BB〜BSB A A C @ IYyAOw @ EAGKCQ @ I @ A _ @ [OYU _ @] eAoAeEaBsHk @ GCU @ uC_ @ oAWk @ Y] SM_Aa @ IAE @ _F} @ ODK @ Q因子@ GgAAoBHwAHiCPoAHsA @ @@ø添加@克@ LkAHs @银石墨[秒@辅酶A [kAKEqBKsAw @ gFwBcNoAmJg @ _F'},   u'warnings':[],u'bounds':{u'northeast':{u'lat':51.5752274,   u'lng':0.09127539999999999},u'southwest':{u'lat':51.5615695,   u'lng':0.0758157}},u'waypoint_order':[],u'summary':u'Ley St',   u'copyrights':u'Map data \ xa92015 Google',u'legs':[{u'distance':   {u'text':u'2.3 km',u'value':2293},u'end_address':u'Ilford,   伊尔福德,大伦敦IG2,英国',u'via_waypoint':[],   u'duration_in_traffic':{u'text':u'5 mins',u'value':315},   u'start_address':u'Ilford,伊尔福德,大伦敦IG1,英国',   u'start_location':{u'lat':51.5624203,u'lng':0.0763182},你的'步骤':   [{u'html_instructions':u'Head 西南 Thorold Rd   朝 Adelaide Rd ',u'distance':{u'text':u'42 m',u'value':   42},u'travel_mode':u'DRIVING',u'start_location':{u'lat':   51.5624203,u'lng':0.0763182},u'polyline':{u'points':u'cxuyH_ | Mb @ zABF'},u'duration':{u'text':u'1 min',u'价值':6},   u'end_location':{u'lat':51.5622154,u'lng':0.0758157}},   {u'html_instructions':你在阿德莱德路'左转,   u'distance':{u'text':u'82 m',u'value':82},u'travel_mode':   u'DRIVING',u'maneuver':u'turn-left',u'start_location':{u'lat':   51.5622154,u'lng':0.0758157},u'polyline':{u'points':你'{vuyH {xM~BsB'},u'duration':{u'text':u'1 min',u '价值':33},   u'end_location':{u'lat':51.56157770000001,u'lng':0.0763982}},   {u'html_instructions':你在环形交叉路口,走第一个出口   到 Hainault St ',u'distance':{u'text':u'62 m',u'value':   62},u'travel_mode':u'DRIVING',u'maneuver':u'round-left-left',   u'start_location':{u'lat':51.56157770000001,u'lng':0.0763982},   u'polyline':{u'points':你'{ruyHo | M?A?A?A?A?A?A?A?A @ ?? AU_ACYKw @'},   u'duration':{u'text':u'1 min',u'value':16},u'end_location':   {u'lat':51.5617618,u'lng':0.0772199}},{u'html_instructions':u'At   环形交叉路口,在第一个出口驶入 Ley St ',   u'distance':{u'text':u'1.5 km',u'value':1539},u'travel_mode':   u'DRIVING',u'maneuver':u'round -out-left',u'start_location':   {u'lat':51.5617618,u'lng':0.0772199},u'polyline':{u'points':   U' tuyHsaNA·A·A'A 10 AA?AAA AAA ???AA ?? A'AAA·A·A'A'AAA·A·A'A'甲@ ??甲·A·甲?甲@甲 @ [OYU _ @] eAoAeEaBsHYwAQo @?铕@ oCUw @ IWIUMUEKSQKIGCq @ [MEiAe @ F} @ KAcDi @ q因子@ GgAAsAD [毕@家蚕@ d {@ HmAFoAHsA @ö@@添加@ģ@ @ JcAFG @小号@银石墨[秒@辅酶A [I @ G'},   u'duration':{u'text':u'4 mins',u'value':263},u'end_location':   {u'lat':51.5734933,u'lng':0.08373649999999999}},   {u'html_instructions':你把正确转到东部   Ave / A12 目的地将开启   左边',u'distance':{u'text':u'0.6 km',u'value':568},   u'travel_mode':u'DRIVING',u'maneuver':u'turn-right',   u'start_location':{u'lat':51.5734933,u'lng':0.08373649999999999},   u'polyline':{u'points':   u'i} wyHkjOa @ CA} @铯@等式@ EA @ EYYqBSmACMMw @ SSA] YBW @}安永@ eGGg @ E_ @ G ^ _ @ [mCKqA'},   u'duration':{u'text':u'1 min',u'value':81},u'end_location':   {u'lat':51.5752274,u'lng':0.09127539999999999}}],u'duration':   {u'text':u'7 mins',u'value':399},u'end_location':{u'lat':   51.5752274,u'lng':0.09127539999999999}}]}],u'status':u'OK',u'geocoded_waypoints':[{u'place_id':u'ChIJA-CogdWl2EcRwTLERk1SnHY',   u'geocoder_status':u'OK',u'types':[u'postal_code_prefix',   u'postal_code']},{u'place_id':u'ChIJSdgOJwWk2EcR_xRqH8zm13o',   u'geocoder_status':u'OK',u'types':[u'postal_code_prefix',   u'postal_code']}]}

1 个答案:

答案 0 :(得分:0)

item不包含duration_in_traffic密钥。

对于您的示例输出,duration_in_traffic值的正确路径为item['legs'][0]['duration_in_traffic']