我有字符串: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 的百万行熊猫数据框一起使用
2 回答

森栏
TA贡献1810条经验 获得超5个赞
该.字符在正则表达式中具有特殊含义。您可以使用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
添加回答
举报
0/150
提交
取消