列出理解以检查是否存在任何项目。
我有一些文字,想检查一些关键词。如果它包含任何关键字,它应该返回我的句子。
一个例子:
Error: write EPIPE at WriteWrap.afterWrite [as oncomplete] (net.js:799:14)
这有效。但是,我正在考虑是否有更好的方法,因为关键字列表可能会增加。
我尝试将关键字放在列表中,但在此列表理解中不起作用。 或使用
text = [t for t in string.split('. ')
if 'drink' in t or 'eat' in t
or 'sleep' in t]
答案 0 :(得分:1)
您快到了:
pattern = ['drink', 'eat', 'sleep']
[t for t in string.split('. ') if any(word in t for word in pattern)]
关键是检查模式中的每个单词是否在句子中:
any(word in t for word in pattern)
答案 1 :(得分:1)
您对any
的使用是向后的。这就是您想要的:
[t for t in string.split('. ') if any(l in t for l in pattern)]
另一种方法是使用正则表达式:
import re
regex = '|'.join(pattern)
[t for t in string.split('. ') if regex.search(t)]