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

时间:2018-11-10 17:37:46

标签: python regex list replace

我有一个字符串:

bdv. mot. g. vns. kilm.

了解诸如

之类的字符串列表
important_strings_lst=['bdv.', 'dktv.', 'mot. g.', 'vyr. g.']

我想选择regex,例如:

bdv. mot. g.

我加入了列表,并尝试:idea from here

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 个答案:

答案 0 :(得分:0)

.字符在正则表达式中具有特殊含义。您可以使用re.escape使字符串“ safe”在正则表达式中使用。

>>> 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

答案 1 :(得分:0)

也许是分割字符串

@Controller

使用您的列表,从原始字符串中删除拆分后剩下的内容。