So, I had to modify your code to run. I am using Python 3.4.3 on Ubuntu 14.04.
#import urllib import urllib.parse import urllib.request
I received a similar error:
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)
Basically, instead of trying to decode the valid json string, we’re trying to decode the Python ‘None’ value, which is not valid json. Try patching in the following example code. Run it first once to double-check that the simplest json object ‘{}’ will work. Then, try each different ‘possible_json_string’ one by one.
#... 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)