正则表达式来提取python列表中的字符串
问题描述:
我有一个包含地址的列表。我想提取他们的街道名称。正则表达式来提取python列表中的字符串
想,我的琴弦如下:
'897 har glen apt. 55'
'47 ts brook suite 93'
我想要两个类型的答案: 一个有以下几点:
'897 har glen'
'47 ts brook'
其他答案应该就在街道名称:
'har glen'
'ts brook'
m = re.findall('(?:\w+[apt|suite])', '897 har glen apt. 55')
上述命令不起作用。我认为第二个更容易。但我真的很想知道如何去做第一个。基本上,我不想要任何以我的字符串中的“apt”或“suite”开头的短语。
正则表达式对我来说太困惑了,任何帮助都将不胜感激!
在此先感谢!
答
你的规则是或可能是有点模糊,但这样的事情可能工作:
\d+[ \t]*(.*?)[ \t]*(?=apt|suite)
这对于与Python更完整的示例如下:
s = """
897 har glen apt. 55
47 ts brook suite 93
"""
for match in re.findall(r"\d+[ \t]*(.*?)[ \t]*(?=apt|suite)", s):
print(match)
输出:
har glen
ts brook
答
你可以试试这个。
addrs = ['897 har glen apt. 55', '47 ts brook suite 93']
[re.sub('\s*(apt|suite).*$', '', addr) for addr in addrs]
答
import re
m = re.findall('(.*)([apt|suite].*)', '897 har glen apt. 55')
print([ i for i in m])
已经在过去的搏斗与正则表达式,这个工具可能会有所帮助 - http://regexr.com/ – AlphaTested
这个怎么样? [re.sub('s *(apt | suite)。* $','',addr)addrs] addr] – Shiping
人们认为'[apt | suite]'是匹配的正确方式正则表达式的替代品?我们一直都在看,但它不可能在任何教程中。 – Barmar