string= "'Patriots', 'corona2020','COVID-19','coronavirus','2020TRUmp','Support2020Trump','whitehouse','Trump2020','QAnon','QAnon2020',TrumpQanon"
badwords = ['qanon', 'trump', 'corona', 'COVID']
如果string
中的化合物包含badwords
的子字符串,则必须从该字符串中删除该化合物。例如,我们在badwords
中有COVID
,那么COVID-19
应该在string
中删除
我试图像这样使用re
模块,但失败了:
import re
badwords = ['qanon', 'trump', 'corona', 'COVID']
string = "'Patriots', 'corona2020','COVID-19','coronavirus','2020TRUmp','Support2020Trump',Trump2020,'QAnon'"
for each in badwords:
print(re.findall ('[0-9a-zA-Z]+'+each,string,flags=re.IGNORECASE)+\
re.findall (each+'[0-9a-zA-Z]+',string,flags=re.IGNORECASE))
我想要的是:一个新字符串"'Patriots','whitehouse'"
应该返回
首先,创建一个与
badwords
列表中的任何单词匹配的正则表达式:然后,
split()
您的string
使用逗号,以获得每个元素包含一个复合词的列表。 接下来,迭代这个列表,如果正则表达式与字符串不匹配,则将其添加到新的单词列表中。 最后,我们可以使用str.join()
将新的单词列表连接到单个字符串中这给了我们字符串:
如果您有这种倾向,可以将循环编写为一行:
或者
我正在将每个单词转换为大写(或者可以是小写),这样就可以将每个相似的单词匹配到
find
上,而不会出现大写或小写的差异相关问题 更多 >
编程相关推荐