【发布时间】:2016-03-13 21:50:09
【问题描述】:
我正在网页抓取并试图过滤掉其中包含某些术语的句子。假设我有这个句子列表:
z = ['a privacy policy', 'there are many standard challenges that face every business']
我想过滤掉其中包含此列表中任何单词的句子:
junk_terms = ['privacy policy', 'cookie policy', 'copyright']
所以我这样做:
for sentence in z:
if all(term not in sentence for term in junk_terms):
print sentence
它打印出there are many standard challenges that face every business
到目前为止一切顺利。但是,我注意到它没有将 junk_terms 中的术语与 z 中的整个术语相匹配。它正在查看 junk_terms 中是否有任何字母出现在 z 中。例如,让我们将 junk_terms 中的“隐私政策”一词更改为“privac”
junk_terms = ['privac', 'cookie policy', 'copyright']
我希望它不会过滤掉 z 中的任何句子。但是,如果您运行它,您会发现它仍然会过滤掉带有“隐私政策”的句子,因为它包含字母“privac”。有没有办法编写此代码,以便它不比较字母而是比较整个单词?
【问题讨论】:
-
如果你想让它与垃圾词中的任何单词匹配,你应该选择
any而不是all -
为什么您认为在更改您的 junk_terms 后它不应该打印任何内容?