将关键字循环添加到正则表达式中



我正试图组织一个循环,以避免在正则表达式中插入大量关键字。我的目标是提取这些关键字前面的"街道"、"大道"或"道路"名称。到目前为止,我已经达到了这个阶段,它并不是一个循环。有可能做这样的事吗?

keywords = ['street','avenue','road']
for i in keywords:
df['street'] = df['address'].str.extract('(d[A-z -]+ i')

我的输入数据集由几列组成。其中之一就是地址。英国,曼彻斯特,牛津路,57号。我只需要将部分数据提取到一个单独的列中。

我的预期输出:

牛津路

制作一个匹配所有关键字的正则表达式,并将其连接到匹配街道名称的部分。

import re
keywords = ['street','avenue','road']
keywords_re = '|'.join(map(re.escape, keywords))
df['street'] = df['address'].str.extract(rf'([-a-z ]+ (?:{keywords_re}))', flags=re.IGNORECASE)

您也不应该在regexp的开头有d,因为街道名称的开头没有数字。

最新更新