Python NoneType对象不可订阅

时间:2015-12-23 23:43:43

标签: python json api

我正在尝试此代码并在以lat,lng和location开头的行中获取错误。有人可以帮忙吗?

import urllib.parse
import urllib.request
import json
while True:
    address = input('Enter location: ')
    if len(address) < 1 : break 
    serviceurl = 'http://python-data.dr-chuck.net/geojson'
    url = serviceurl + '?' + urllib.parse.urlencode({'sensor':'false', 'address':  address})
   response = urllib.request.urlopen(url)
data = response.readall().decode('utf-8')
js = json.loads(str(data))
if 'status' not in js or js['status'] != 'OK':
    print ('==== Failure To Retrieve ====')
    print (data)
    continue
    print (json.dumps(js, indent=4))

    lat = js["results"][0]["geometry"]["location"]["lat"]
    lng = js["results"][0]["geometry"]["location"]["lng"]
    print('lat',lat) #,('lng'),lng
    location = js['results'[0]]['formatted_address']
    print(location)

谢谢, 阿伦

1 个答案:

答案 0 :(得分:2)

错误NoneType object is not subscriptable表示您尝试执行此操作:

None[something]

如果它出现在这一行:js["results"][0]["geometry"]["location"]["lat"],则表示js["results"][0]["geometry"]["location"]["lat"]不存在,即该路径上的某些内容评估为无。

例如,如果jsNone,则无法尝试评估None["results"]

或者,如果js["results"][0]None,它将无法尝试执行None["geometry"]等。

顺便说一句,js很可能是None,因为你确实有这个:

except: js = None