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

2024-09-30 06:29:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有字符串:

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

在regex中用\s改变位置也没有成功。怎么做?你知道吗

我可以使用类似[x for x in important_strings_lst if x in my_string]的东西,但我需要良好的性能,因为这将用于带有str.replace的数百万行pandas数据帧


Tags: 字符串inre列表regexstringslstmot
2条回答

也许是分裂的绳子

    bdv. mot. g. vns. kilm.

使用您的列表并从原始字符串中删除拆分后剩下的内容。你知道吗

.字符在正则表达式中有特殊的含义。可以使用^{}使字符串“安全”地用于正则表达式。你知道吗

>>> 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.']

熊猫有自己的^{},应该像re.findall一样工作

相关问题 更多 >

    热门问题