Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串中删除短语列表_Python - Fatal编程技术网

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改变了。如果你在不了解它的功能的情况下复制粘贴它,恐怕你的编程方法是错误的。谢谢!我让它毫无问题地工作,这只是确保答案与问题相符的良好实践;)