使用Python获取街道地址的美国邮政编码
用Python获取美国邮政的街道地址对应的邮政编码,最有效的方法是什么?这件事真的能做到吗?
最好是使用本地数据库,而不是通过某种远程API来获取。
提前感谢大家提供的任何帮助。
2 个回答
0
一种更可靠的方法是使用一个强大的地址验证服务,这种服务使用的是最新的美国邮政服务(USPS)的地址数据。为了坦诚相告,我在SmartyStreets工作,这是一家提供地址验证软件的公司,正好提供这样的服务。下面是一个简单的例子,展示了如何使用这个服务:
https://github.com/smartystreets/LiveAddressSamples/blob/master/python/street-address.py
从这个例子中你可以看到,这项服务提供了完整的9位邮政编码,以及其他所有地址信息,还有一些关于地址的额外数据。
4
可以从这里开始了解一下:
googlemaps – 在Python中使用Google地图和本地搜索API
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