簡體   English   中英

在Python中將長字符串分割成地址列表

[英]Split long string of addresses into list of addresses in Python

我在python中有一兩千個地址的字符串,像這樣:

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

將這個長字符串拆分為單獨地址的最簡單方法是什么? 我試圖編寫一個程序,該程序基於3個或4個字符在47 < ord(i) < 58的行中進行拆分,但是遇到了麻煩。

假設所有地址都與給定的地址相同,則可以使用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']
>>>

上面解釋上面使用的所有Regex語法,但以下是快速分解:

\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

您可以使用正則表達式輕松完成此操作,

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM