Python正则表达式从列表中删除除字符串之外的所有内容

我有字符串:

bdv. mot. g. vns. kilm.

并且知道像这样的字符串列表

important_strings_lst=['bdv.', 'dktv.', 'mot. g.', 'vyr. g.']

我想获得如下regex选择:

bdv. mot. g.

我加入了列表并尝试过:来自这里的想法

regex = re.compile(r'\b(?!bdv.|dktv.|mot. g.|vyr. g.)\w+', re.UNICODE)
regex.sub("", 'bdv. mot. g. vns. kilm.')

得到了

'bdv. mot. . . .'

改变正则表达式中的位置\s也没有奏效。怎么做?

我可以使用类似的东西,[x for x in important_strings_lst if x in my_string]但我需要良好的性能,因为这将与str.replace 的百万行熊猫数据框一起使用


HUH函数
浏览 312回答 2
2回答

森栏

该.字符在正则表达式中具有特殊含义。您可以使用re.escape使字符串“安全”以在正则表达式中使用。>>> import re... important_strings=['bdv.', 'dktv.', 'mot. g.', 'vyr. g.']... regex = re.compile('|'.join(re.escape(s) for s in important_strings))... regex.findall('bdv. mot. g. vns. kilm.')['bdv.', 'mot. g.']熊猫有自己的findall,应该像re.findall

慕桂英546537

也许拆分字符串    bdv. mot. g. vns. kilm.使用您的列表并从原始字符串中删除拆分后剩下的内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python