繁体   English   中英

如果列表中包含子字符串,则从字符串中删除子字符串

[英]Remove substring from string if substring is contained in a list

问题:我有一个从“ listOfTags”列表中包含“标签”的字符串。 如果字符串包含列表中的这些“标签”之一,我希望能够从字符串中删除这些“标签”。

我尝试的方法:我首先尝试遍历“ listOfTags”,并将每个“ tag”附加到一个名为x的空字符串变量中。 然后,我尝试使用string.replace方法从另一个名为y的字符串变量中删除“标签”。然后我意识到,如果“标签”以它们附加的顺序出现,则该方法只会返回我想要的内容变量x。

我创建的算法如下:

如果字符串包含特定列表中指定的任何字符串作为子字符串,请执行以下操作:从字符串中删除该子字符串

问题的一个示例:

listOFTags = ["#tag", "#bold", "#merge"] 

string = "#tag #bold bob #merge" 

#execute algorithm here

如何获得包含文本“ bob”的字符串?

我要退货:

new_string = "bob"

您可以使用replace

listOFTags = ["#tag", "#bold", "#merge"]

string = "#tag #bold bob #merge"

for tags in listOFTags:
    string = string.replace(tags, "")

print(string)

如果有数十个标记,并且要处理的每个字符串包含数十个单词,则使用正则表达式执行此任务会更有效。

import re
p = re.compile('|'.join(listOFTags))  # p can be reused across different input strings
new_string = p.sub("", string).strip()

如果标签不包含任何在正则表达式中具有特殊含义的字符,则此解决方案有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM