我有一个列表
forbidden_patterns=['Word1','Word2','Word3','d{4}']
和一个字符串:
string1="This is Word1 a list thatWord2 I'd like to 2016 be readableWord3"
让 string1 删除forbidden_patterns中定义的所有模式和单词的方法是什么,以便它以 :
clean_string="This is a list that I'd like to be readable"
\d{4} 是删除年份模式,在本例中为 2016
年非常欢迎列表理解
你在这里:
import re
forbidden_patterns = ['Word1', 'Word2', 'Word3', 'd{4}']
string = "This is Word1 a list thatWord2 I'd like to 2016 be readableWord3"
for pattern in forbidden_patterns:
string = ''.join(re.split(pattern, string))
print(string)
本质上,此代码遍历 forbidden_patterns
中的每个模式,使用该特定模式作为分隔符拆分string
(从字符串中删除分隔符,在本例中为模式(,并将其重新连接在一起为下一个模式的字符串。
编辑
要删除多余的空格,请将以下行作为 for 循环中的第一行:
string = ''.join(re.split(r'b{} '.format(pattern), string))
此行检查模式是否是整个单词,如果是,则删除该单词和其中一个空格。确保此行高于 string = ''.join(re.split(pattern, string))
,它比此行"不那么具体"。
import re
new_string = string1
for word in forbidden_words:
new_string = re.sub(word, '', new_string)
您的new_string
将是您想要的。不过,它有点长,删除了一些单词,留下 2 个空格作为This is a list that I'd like to be readable