规范化Django/Python中的街道地址

Bel*_*dez 8 python django django-models django-forms geopy

我有一个Django表单,其中一个字段是TextInput街道地址.

我想规范化数据.例如:

>> normalize('420 East 24th St.')
'420 E. 24th Street'

>> normalize('221 Amsterdam Av')
'221 Amsterdam Ave.'

>> normalize('221 Amsterdam Avenue')
'221 Amsterdam Ave.'
Run Code Online (Sandbox Code Playgroud)

或类似的东西.我已经在使用geopy进行地理编码了.也许这可能有帮助吗?

另外:我应该在哪里正常化?在数据库模型中还是在表单字段的clean函数中?

mdw*_*ott 5

最可靠的方法是使用真正的地址验证服务。它不仅会根据 USPS 标准(参见出版物 28)对地址组成部分进行标准化(规范化),而且您还可以确定该地址是真实的。

全面披露:我在 SmartyStreets 工作,该公司就提供这样的服务。下面是一些非常简单的 Python 示例代码,展示了如何通过 HTTP GET 请求使用我们的服务:

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