gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:02 24 4
gpt4 key购买 nike

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

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'

关于python - 如何在 Python 列表中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com