我有一个字符串(颜色)列表,比如说
l = ['chocolate brown','brown','chocolate']
我有一个字符串:
sentence = "The jeans is chocolate brown in color and has brown colored pockets"
我必须从字符串中删除chocolate brown
和brown
。这只是一个例子。基本上每当我遇到字符串中的颜色时,如果它存在于颜色列表中,我必须将其删除。有效的方法是什么?
我认为的一种方法是将字符串分成三字母,双字母和单字符串。但是,在所有n-gram之间加入这些n-gram将是一个问题。
我的原始列表太大而字符串很短。我需要一个有效的解决方案,因为我必须循环遍历列表的所有元素。是否可以检查字符串中的颜色,然后检查该颜色是否在列表中。这不是一个有效的解决方案吗?
答案 0 :(得分:2)
l = ['chocolate brown','brown', 'chocolate']
sentence = "The jeans is chocolate brown in color and has brown colored pockets"
for word in l:
# "word + ' '" is for deleting the trailing whitespace after each color word.
sentence_new = sentence.replace(word + ' ', '')
sentence = sentence_new
print(sentence)
输出:
The jeans is in color and has colored pockets
基本上只是用你想要的东西替换你不想要的东西(我用了一个空字符串“”),然后把这个动作放在循环中。
请注意replace()
返回一个新字符串而不是修改原始字符串,因此您必须将其放入一个新变量,例如str_new。
答案 1 :(得分:2)
您可以使用re
:
>>> import re
>>> l = ['chocolate brown','brown','chocolate']
>>> s = "The jeans is chocolate brown in color and has brown colored pockets"
>>>
>>> re.sub('|'.join(re.escape(r) for r in l), '', s)
'The jeans is in color and has colored pockets'