我有这样的可变地址字符串:
1234 Maple Ave. Queens, NY 11011
此格式因字符串而异,因此我可以使用简单的字符串解析/拆分。 有什么方法可以连接到谷歌地图或其他一些可以查找地址并分别给我所有地址单元的 api?
理想情况下,我应该能够做类似的事情:
>> address = "1234 Maple Ave. Queens, NY 11011"
>> data = maps_api.extract_data(address)
>> print data.house_number
>> 1234 Maple Ave.
>> print data.city
>> Queens
>> print data.state
>> NY
>> print data.zip
>> 11011
这似乎非常适合 googlemaps api。
import googlemaps
import pprint
gmaps = googlemaps.Client(<your-api-key>)
address = "1234 Maple Ave. Queens, NY 11011"
result = gmaps.geocode(address)
pprint.pprint(result)
这会产生:
[{'address_components': [{'long_name': 'Maple Avenue',
'short_name': 'Maple Ave',
'types': ['route']},
{'long_name': 'Queens',
'short_name': 'Queens',
'types': ['political',
'sublocality',
'sublocality_level_1']},
{'long_name': 'Queens County',
'short_name': 'Queens County',
'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']},
{'long_name': '11355',
'short_name': '11355',
'types': ['postal_code']}],
'formatted_address': 'Maple Ave, Queens, NY 11355, USA',
'geometry': {'bounds': {'northeast': {'lat': 40.7568371, 'lng': -73.8257325},
'southwest': {'lat': 40.7532547, 'lng': -73.8356575}},
'location': {'lat': 40.7545838, 'lng': -73.8304485},
'location_type': 'GEOMETRIC_CENTER',
'viewport': {'northeast': {'lat': 40.7568371,
'lng': -73.8257325},
'southwest': {'lat': 40.7532547,
'lng': -73.8356575}}},
'partial_match': True,
'place_id': 'ChIJsdNKew1gwokRxRSYip5FkAw',
'types': ['route']}]
不过您需要一个 api 密钥:为此,请按照 这些说明.
替代方案似乎有 pygeocoder 或 geopy(它可以让您选择 OpenStreetMap 和 Bing)。