python,从列表中删除字符串中的单词

python,从列表中删除字符串中的单词,python,string,list,Python,String,List,我想删除字符串中的单词,这些单词或“种子”单词在列表中 例如: query = "LK936033.1 Babesia assembly 454hybrid_PBjelly scaffold Contig1323 7" seeds = ["assembly","454","scaffold","contig"] 预期结果: "LK936033.1 Babesia 7" 我找到了一种方法来删除这样的单词: ' '.join([i for i in query.split() if i not

我想删除字符串中的单词,这些单词或“种子”单词在列表中

例如:

query = "LK936033.1 Babesia assembly 454hybrid_PBjelly scaffold Contig1323  7"
seeds = ["assembly","454","scaffold","contig"]
预期结果:

"LK936033.1 Babesia 7"
我找到了一种方法来删除这样的单词:

' '.join([i for i in query.split() if i not in seeds])

但该方法仅从种子列表中删除确切的单词,而不删除包含种子的单词

您需要扩展您的测试;为了提高效率,请使用以下选项:

' '.join([i for i in query.split() if not any(w in i.lower() for w in seeds)])
any(w in i.lower()表示w in seeds)
测试使用生成器表达式测试当前单词是否包含任何小写种子单词;它将只评估最小数量的测试以找到匹配项

演示:

>>> query = "LK936033.1 Babesia assembly 454hybrid_PBjelly scaffold Contig1323  7"
>>> seeds = ["assembly","454","scaffold","contig"]
>>> ' '.join([i for i in query.split() if not any(w in i.lower() for w in seeds)])
'LK936033.1 Babesia 7'