使用python3从googlemapsapi响应中提取数据

2024-05-15 21:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用googlemaps库来查询googlemapsapi。我想根据邮政编码提取一个城市的名称。在

例如,对于邮政编码23325,我想提取Chesapeake。在

这是我的初始代码:

import googlemaps
from keys import google_api_key

gmaps = googlemaps.Client(key=google_api_key)
geocode_result = gmaps.geocode('23325')
print(geocode_result)

以下是打印地理编码结果的结果:
[{'address_components': [{'long_name': '23325', 'short_name': '23325', 'types': ['postal_code']}, {'long_name': 'Indian River', 'short_name': 'Indian River', 'types': ['neighborhood', 'political']}, {'long_name': 'Chesapeake', 'short_name': 'Chesapeake', 'types': ['locality', 'political']}, {'long_name': 'Virginia', 'short_name': 'VA', 'types': ['administrative_area_level_1', 'political']}, {'long_name': 'United States', 'short_name': 'US', 'types': ['country', 'political']}], 'formatted_address': 'Chesapeake, VA 23325, USA', 'geometry': {'bounds': {'northeast': {'lat': 36.8399469, 'lng': -76.21933109999999}, 'southwest': {'lat': 36.7870261, 'lng': -76.25747489999999}}, 'location': {'lat': 36.8179707, 'lng': -76.2305308}, 'location_type': 'APPROXIMATE', 'viewport': {'northeast': {'lat': 36.8399469, 'lng': -76.21933109999999}, 'southwest': {'lat': 36.7870261, 'lng': -76.25747489999999}}}, 'place_id': 'ChIJTcQMfRK9uokRcVFVU9zMizw', 'types': ['postal_code']}]

当我看类型时
print(type(geocode_result))

Python告诉我
<class 'list'>

如果我尝试类似geocode_result[1]的操作,则会收到以下错误消息: IndexError: list index out of range

如果我尝试geocode_result['address_components']我会收到一条TypeError: list indices must be integers or slices, not str消息

任何帮助将不胜感激!谢谢您!在


Tags: keynameaddressresultlonglisttypesshort
2条回答

您有一个dicts的列表,因此可以使用list索引获取第一个项,然后使用键获得dict元素。在

例如:

item = geocode_result[0]
item['address_components'] # Returns another list
item['formatted_address'] # Returns a string 'Chesapeake, VA 23325, USA'

这是反向地理编码。这就可以做到:

import urllib, json
import urllib.request
geocode = input("Enter zip code : ")
url = "https://maps.googleapis.com/maps/api/geocode/json?&address=" + geocode
response = urllib.request.urlopen(url)
data = json.loads(response.read())
print(data)

相关问题 更多 >