2010-09-07 4 views
4

Каков наиболее эффективный способ получения почтового индекса почтового индекса США по адресу улицы с помощью Python? Это что-то возможно?Извлечение почтового индекса США для почтового адреса с использованием Python

Предпочтительно, что-то, что включает в себя локальную базу данных, выступает против удаленного вызова API.

Заранее благодарим за любую помощь, которую вы можете предложить.

ответ

4

Может быть начало: The Zip Code Database Project

googlemaps – Google Maps and Local Search APIs in Python

GoogleMaps.geocode(query, sensor='false', oe='utf8', ll='', spn='', gl='') 

Учитывая адрес строки запроса, возвращает словарь информации о том месте, в том числе его широты и долготы. Интересные биты:

>>> gmaps = GoogleMaps(api_key) 
>>> address = '350 Fifth Avenue New York, NY' 
>>> result = gmaps.geocode(address) 
>>> placemark = result['Placemark'][0] 
>>> lng, lat = placemark['Point']['coordinates'][0:2] 
# Note these are backwards from usual 
>>> print lat, lng 
40.6721118 -73.9838823 
>>> details = placemark['AddressDetails']['Country']['AdministrativeArea'] 
>>> street = details['Locality']['Thoroughfare']['ThoroughfareName'] 
>>> city = details['Locality']['LocalityName'] 
>>> state = details['AdministrativeAreaName'] 
>>> zipcode = details['Locality']['PostalCode']['PostalCodeNumber'] 
>>> print ', '.join((street, city, state, zipcode)) 
350 5th Ave, Brooklyn, NY, 11215 
0

Более надежным способом является использование надежной службы проверки адресов, который использует текущие данные USPS адреса. В полном раскрытии, я работаю для SmartyStreets, компании по проверке адреса, которая предоставляет just such a service. Вот простой пример, который показывает, как использовать услугу:

https://github.com/smartystreets/LiveAddressSamples/blob/master/python/street-address.py

Как видно из образца, эта услуга предоставляет полный 9-значный почтовый индекс вместе со всеми другими компонентами адреса, а также некоторые метаданные по адресу.