我正在开发一些地址清理/地理编码软件,最近遇到了一种特殊的地址格式,这给我带来了一些问题。你知道吗
我的外部地理编码模块在查找30 w 60th new york
(30 w 60th street new york
是地址的正确格式)等地址时遇到问题。你知道吗
我需要做的就是检查字符串:
th
或st
或nd
或rd
?(+后面的空格)。一、 电子33rd
34th
21st
24th
street
这个词吗?你知道吗如果是,什么也不做。你知道吗
如果否,在特定模式之后立即添加单词street
?你知道吗
正则表达式是处理这种情况的最佳方法吗?你知道吗
进一步澄清:我对其他地址后缀没有任何问题,例如avenue、road等。我分析了非常大的数据集(我每天通过应用程序运行大约12000个地址),而忽略street
的实例是最让我头疼的问题。我研究了地址解析模块,如usaddress、smartystreets和其他模块。我真的只需要拿出一个干净的(希望regex?)我所描述的具体问题的解决方案。你知道吗
我想的是:
street
。如果是,什么也不做。你知道吗[:targetword + len(targetword)] + 'street' + [:targetword + len(targetword)]
重新构建列表。(targetword
将是47th
或字符串中的任何内容)我对regex不是很在行,所以我在寻找一些建议。你知道吗
谢谢。你知道吗
看来你在找regexp。=P
下面是我专门为您构建的一些代码:
我是python学习者,所以谢谢你让我知道它是否解决了你的问题。他说
在一小串地址上测试。他说
希望它能帮助你解决问题。他说
谢谢你!他说
编辑
如果后面紧跟着“大街”或“路”以及“街道”,则应注意:
重新编辑
我根据您的需要做了一些改进,并添加了一个使用示例:
将输出:
重新编辑
最后一个函数:将count参数添加到回复sub()
虽然您当然可以使用regex来解决这类问题,但我还是忍不住想,很可能有一个Python库已经为您解决了这个问题。我从来没用过这些,但只要快速搜索一下就会发现:
https://github.com/datamade/usaddress
https://pypi.python.org/pypi/postal-address
https://github.com/SwoopSearch/pyaddress
PyParsing还有一个地址示例,您可以查看:http://pyparsing.wikispaces.com/file/view/streetAddressParser.py
您还可以看看前面的问题:is there a library for parsing US addresses?
有什么理由不能仅仅使用第三方库来解决问题吗?他说
编辑:他们的网址:https://github.com/pyparsing/pyparsing
您可以通过将这些字符串中的每一个转换为列表,并在这些列表中查找特定的字符组来实现这一点。例如:
这看起来很混乱,但它应该完成工作,只要数字是两位数长。然而,如果有许多事情需要你去寻找,你可能应该寻找一个更方便,更简单的方法来做到这一点。他说
相关问题 更多 >
编程相关推荐