正则表达式在python列表中提取字符串

时间:2017-04-21 01:37:18

标签: python regex

我有一个包含地址的列表。我想从中提取街道名称。

假设我的字符串如下:

'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”开头的短语。

正则表达式对我来说太混乱了,任何帮助都会非常感激!

提前致谢!

3 个答案:

答案 0 :(得分:0)

你的规则是或可能有点模糊,但这样的事情可能有用:

\d+[ \t]*(.*?)[ \t]*(?=apt|suite)

Live Demo

对于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)

Check Live Demo

import re
m = re.findall('(.*)([apt|suite].*)', '897 har glen apt. 55')
print([ i for i in m])