我正在使用google geocode API使用Python 3.5测试以下Python代码。但是收到以下错误。该代码是从Coursera的示例代码复制而来的。我们假设能够测试任何位置。例如:密西根州的安娜堡
关于为什么加载JSON代码时会出错的任何想法:
从None> JSONDecodeError:期望值提高JSONDecodeError(“期望值”,s,err.value)
这是代码:
import urllib import json serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?' while True: address = input('Enter location: ') if len(address) < 1 : break url = serviceurl + urllib.parse.urlencode({'sensor':'false', 'address': address}) print ('Retrieving', url) uh = urllib.request.urlopen(url) data = uh.read() print ('Retrieved',len(data),'characters') js = json.loads(str(data))
因此,我不得不修改您的代码才能运行。我在Ubuntu 14.04上使用Python 3.4.3。
#import urllib import urllib.parse import urllib.request
我收到了类似的错误:
heyandy889@laptop:~/src/test$ python3 help.py Enter location: MI Retrieving http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=MI Retrieved 1405 characters Traceback (most recent call last): File "help.py", line 18, in <module> js = json.loads(str(data)) File "/usr/lib/python3.4/json/__init__.py", line 318, in loads return _default_decoder.decode(s) File "/usr/lib/python3.4/json/decoder.py", line 343, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None ValueError: Expecting value: line 1 column 1 (char 0)
基本上,我们不是尝试解码有效的json字符串,而是尝试解码无效的json的Python“ None”值。尝试在以下示例代码中打补丁。首先运行一次,仔细检查最简单的json对象’{}’是否可以工作。然后,一个一个地尝试每个不同的“ possible_json_string”。
#... print ('Retrieved',len(data),'characters') #possible_json_string = str(data) #original error possible_json_string = '{}' #sanity check with simplest json #possible_json_string = data #why convert to string at all? #possible_json_string = data.decode('utf-8') #intentional conversion print('possible_json_string') print(possible_json_string) js = json.loads(possible_json_string)