Python 从字符串中删除短语列表
我有一系列的短语:Python 从字符串中删除短语列表,python,Python,我有一系列的短语: bannedWords = ['hi', 'hi you', 'hello', 'and you'] 我想用一句话,比如“嗨,蒂姆和你都好吗?”来表达: ", how are tim doing" 精确的大小写匹配是可以的-对不起,应该已经澄清了。您可以使用带有标志的re.sub以不区分大小写的方式进行匹配 import re bannedWords = ['hi', 'hi you', 'hello', 'and you'] sentence = "Hi, how a
bannedWords = ['hi', 'hi you', 'hello', 'and you']
我想用一句话,比如“嗨,蒂姆和你都好吗?”来表达:
", how are tim doing"
精确的大小写匹配是可以的-对不起,应该已经澄清了。您可以使用带有标志的
re.sub
以不区分大小写的方式进行匹配
import re
bannedWords = ['hi', 'hi you', 'hello', 'and you']
sentence = "Hi, how are Tim and you doing"
new_sentence = re.sub('|'.join(bannedWords) + r'\s+', '', sentence, flags=re.I)
# new_sentence: ", how are Tim doing"
由于您也想删除额外的空格,下面的正则表达式应该可以更好地工作:
s = "Hi, How are Tim and you doing"
bannedWords = ['hi', 'hi you', 'hello', 'and you']
for i in bannedWords:
s = re.sub(i + "\s*", '', s, flags = re.I)
print s
# ', How are Tim doing'
使用正则表达式,您可以将要删除的单词与|连接起来。我们还希望用一个空格删除任何多个空格。这确保我们只做两个操作
import re
def remove_banned(s,words):
pattern = '|'.join(words)
s = re.sub(pattern, '', s, flags = re.I) # remove words
s = re.sub('\s+', ' ', s, flags = re.I) # remove extra blank space'
return s
bannedWords = ['hi', 'hi you', 'hello', 'and you']
s = "Hi, How are Tim and you doing"
print(remove_banned(s,bannedWords))
返回:
, How are Tim doing
这是很棘手的,如果要求替换“Hi”,因为列表中有“Hi”,而将“Tim”保留为“Tim”。它将打印类似于
”的内容,在Tim
和doing
之间有一个额外的空格,Tim做得怎么样,但这应该比在横幅词上循环要快。以前的版本工件已删除。你能使用与我文章中相同的措辞吗?其中哪一个是横幅词?@NBC改变了。如果你在不了解它的功能的情况下复制粘贴它,恐怕你的编程方法是错误的。谢谢!我让它毫无问题地工作,这只是确保答案与问题相符的良好实践;)