Skip to main content
 首页 » 编程设计

python之如何在 Python 列表中使用正则表达式

2024年08月25日27duanxz

我需要您的帮助,因为我想在列表中使用正则表达式来仅获取关键字后的字符串。

my_list 看起来像:

 ['Paris, 458 boulevard Saint-Germain', 'Marseille, 29 rue Camille Desmoulins', 'Marseille, 1 chemin des Aubagnens'] 

正则表达式:

re.compile(ur'(?<=rue|boulevard|quai|chemin).*', re.MULTILINE) 

处理后的预期列表:

['Saint-Germain', 'Camille Desmoulins', 'des Aubagnens'] 

谢谢你的帮助。

请您参考如下方法:

看来您的正则表达式在 Python 中不起作用,它抛出的错误是look-behind requires fixed-width pattern。

此外,请注意正则表达式中的 re.MULTILINE 标志是多余的,因为没有 ^ 或 $ 来重新定义行为对于模式。

这是您可以使用的代码:

import re 
lst =  ['Paris, 458 boulevard Saint-Germain', 'Marseille, 29 rue Camille Desmoulins', 'Marseille, 1 chemin des Aubagnens'] 
p = re.compile(r'.*(?:rue|boulevard|quai|chemin)') 
print [p.sub('', x).strip() for x in lst] 

IDEONE demo

结果:

['Saint-Germain', 'Camille Desmoulins', 'des Aubagnens'] 

r'.*(?:rue|boulevard|quai|chemin)' 正则表达式匹配

  • .* - 0 个或多个任意字符
  • (?:rue|boulevard|quai|chemin) - 用 | 分隔的选项中的 1 个。

然后用re.sub 删除匹配的文本。

注意 您可以强制整个单词与 \b 字边界匹配,以便匹配 chemin 而不是 chemins:

r'.*\b(?:rue|boulevard|quai|chemin)\b'