我正在处理地址匹配,例如123 Main St. Suite 100 Chicago, IL
和123 Main Street Chicago, IL
。一个重要问题是转换街道类型的缩写,例如St.
到Street
。我想知道是否有任何Python包处理它,因为它似乎是处理地址的一个非常常见的问题。
PS,我知道usaddress,但它只解析所有部分,不进行任何转换。
答案 0 :(得分:2)
您可以使用地址和usaddress转换为缩写,后跟句点。我使用了usaddress,因为我知道它会解析诸如123 S North Dr.这样的地址这是我所做的一部分:
import usaddress
from address import AddressParser, Address
addr = usaddress.parse(address_line1)
ad = AddressParser()
addr2 = ad.parse_address(address_line1)
#perform some cleanup and functions on addr...
if addr2.street_suffix:
post = addr2.street_suffix
else:
post = ''
Here is the documentation on the address 0.1.1 module。
更新:地址在Python 3.x中不起作用,因为没有()的打印功能。还有另一个模块,街道地址documentation here,其格式和解析地址的工作方式类似,但我发现usaddress已足够。
例如,
parser_address = "6400 S FIDDLERS GREEN CIR SUIT 123"
addr = usaddress.parse(parser_address)
返回:
[('6400', 'AddressNumber'), ('S', 'StreetNamePreDirectional'), ('FIDDLERS', 'StreetName'), ('GREEN', 'StreetName'), ('CIR', 'StreetNamePostType'), ('SUIT', 'OccupancyType'), ('123', 'OccupancyIdentifier')]