为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2021-08-14 15:53:40
我有字符串: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


查看完整回答
反对 回复 2021-08-14
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

也许拆分字符串

    bdv. mot. g. vns. kilm.

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


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 311 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号