我有一个包含地址的列表。我想从中提取街道名称。
假设我的字符串如下:
'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”开头的短语。
正则表达式对我来说太混乱了,任何帮助都会非常感激!
提前致谢!
答案 0 :(得分:0)
你的规则是或可能有点模糊,但这样的事情可能有用:
\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
答案 1 :(得分:0)
addrs = ['897 har glen apt. 55', '47 ts brook suite 93']
[re.sub('\s*(apt|suite).*$', '', addr) for addr in addrs]
答案 2 :(得分:0)
import re
m = re.findall('(.*)([apt|suite].*)', '897 har glen apt. 55')
print([ i for i in m])