2013-02-17 50 views
0

我試圖解析我收到如何解析Python中的Google Maps API數據?

{'results': [{'address_components': [{'long_name': 'New York', 
             'short_name': 'New York', 
             'types': ['locality', 'political']}, 
            {'long_name': 'New York', 
             'short_name': 'NY', 
             'types': ['administrative_area_level_1', 
               'political']}, 
            {'long_name': 'United States', 
             'short_name': 'US', 
             'types': ['country', 'political']}], 
       'formatted_address': 'New York, NY, USA', 
       'geometry': {'bounds': {'northeast': {'lat': 40.9152414, 
                'lng': -73.70027209999999}, 
             'southwest': {'lat': 40.495908, 
                'lng': -74.2590879}}, 
          'location': {'lat': 40.7143528, 
             'lng': -74.00597309999999}, 
          'location_type': 'APPROXIMATE', 
          'viewport': {'northeast': {'lat': 40.9152414, 
                 'lng': -73.70027209999999}, 
             'southwest': {'lat': 40.4959143, 
                 'lng': -74.2557349}}}, 
       'types': ['locality', 'political']}, 
      {'address_components': [{'long_name': 'Manhattan', 
             'short_name': 'Manhattan', 
             'types': ['sublocality', 
               'political']}, 
            {'long_name': 'New York', 
             'short_name': 'New York', 
             'types': ['locality', 'political']}, 
            {'long_name': 'New York', 
             'short_name': 'New York', 
             'types': ['administrative_area_level_2', 
               'political']}, 
            {'long_name': 'New York', 
             'short_name': 'NY', 
             'types': ['administrative_area_level_1', 
               'political']}, 
            {'long_name': 'United States', 
             'short_name': 'US', 
             'types': ['country', 'political']}], 
       'formatted_address': 'Manhattan, New York, NY, USA', 
       'geometry': {'bounds': {'northeast': {'lat': 40.882214, 
                'lng': -73.907}, 
             'southwest': {'lat': 40.6795479, 
                'lng': -74.047285}}, 
          'location': {'lat': 40.7902778, 
             'lng': -73.9597222}, 
          'location_type': 'APPROXIMATE', 
          'viewport': {'northeast': {'lat': 40.820045, 
                 'lng': -73.90331300000001}, 
             'southwest': {'lat': 40.698078, 
                 'lng': -74.03514899999999}}}, 
       'partial_match': True, 
       'types': ['sublocality', 'political']}], 
'status': 'OK'} 
[ 
    { 
     "lat": 40.7143528, 
     "lng": -74.00597309999999 
    }, 
    { 
     "lat": 40.7902778, 
     "lng": -73.9597222 
    } 
] 

我會怎麼能夠解析「結果」例如JSON數據?我想打印出結果中的所有數據。 我的代碼...

import urllib, json 
import pprint 

URL2 = "http://maps.googleapis.com/maps/api/geocode/json?address=New+York&sensor=false" 

googleResponse = urllib.urlopen(URL2) 
jsonResponse = json.loads(googleResponse.read()) 
pprint.pprint(jsonResponse) 
test = json.dumps([s['geometry']['location'] for s in jsonResponse['results']], indent=3) 
print test['results'] 

錯誤我得到的是

回溯(最近通話最後一個):

文件 「C:/Python27/jstox.py」,10號線,在

打印測試[ '結果']

類型錯誤:字符串索引必須是整數,而不是str的

+0

好吧,'test'是一個JSON字符串 - 您使用'json.dumps'來創建它。你爲什麼試圖以字典的形式訪問它? (也就是說,在jsonResponse ['results']]'中你的代碼行'[s ['geometry'] ['location'])是一個將JSON字典解析成列表的好例子,但是,回到JSON--你究竟在做什麼?) – 2013-02-17 03:18:14

回答

0

你實際上已經獲得了你想要的結果。

import urllib, json 
import pprint 

URL2 = "http://maps.googleapis.com/maps/api/geocode/json?address=New+York&sensor=false" 

googleResponse = urllib.urlopen(URL2) 
jsonResponse = json.loads(googleResponse.read()) 
pprint.pprint(jsonResponse) 
pprint.pprint(jsonResponse['results']) 

JSON數據同樣可以被視爲一個Python的dictionary在這種情況下,如果你熟悉這些。