【发布时间】:2016-03-30 11:05:53
【问题描述】:
我正在尝试此代码并在以 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)
谢谢, 阿伦
【问题讨论】:
-
至少有一个字段为空
-
如果您打印整个
js对象,您将看到它有哪些字段。 -
除了你的问题......不要这样做:
if 'status' or 'OK' in js == False。因为:1.'status' or 'OK' in js总是评估为'status',并且 2. 你永远不想与True或False进行比较。要么做if something要么if not something。这将使您避免一些意想不到的问题。顺便说一句,'status' or 'OK' in js == False也计算为'status',所以你的if总是正确的;)