将长字符串地址拆分为Python中的地址列表

时间:2014-07-16 19:54:17

标签: python

我在python中有一个包含几千个地址的字符串,如下所示:

'123 Chestnut Way 4567 Oak Lane 890 South Pine Court'

将此长字符串拆分为单独地址的最简单方法是什么?我尝试编写一个程序,该程序基于47 < ord(i) < 58的行中的3个或4个字符进行拆分,但我遇到了麻烦。

2 个答案:

答案 0 :(得分:3)

假设所有地址都与给定的地址相同,您可以使用re.findall

>>> from re import findall
>>> string = '123 Chestnut Way 4567 Oak Lane 890 South Pine Court'
>>> findall("\d+\D+(?=\s\d|$)", string)
['123 Chestnut Way', '4567 Oak Lane', '890 South Pine Court']
>>>

上面使用的所有正则表达式语法都解释为here,但下面是一个快速细分:

\d+   # One or more digits
\D+   # One or more non-digits
(?=   # The start of a lookahead assertion
\s    # A space
\d|$  # A digit or the end of the string
)     # The end of the lookahead assertion

答案 1 :(得分:1)

你可以很容易地用正则表达式做到这一点,

import re
txt = '123 Chestnut Way 4567 Oak Lane 890 South Pine Court'
re.findall( r'\d+', txt )

最后一个将返回所有数字运行,

['123', '4567', '890']

然后您可以使用该信息来解析字符串。有很多方法,但你可以找到原始字符串中的数字索引,并在其间获取文本。你也可以让regeular表达更高级。以下内容将匹配任意数量的数字,后跟一个空格,后跟任意数量的非数字(包括空格)

re.findall( r'\d+ \D+', txt )

并将返回,

['123 Chestnut Way ', '4567 Oak Lane ', '890 South Pine Court']