在RRS供稿中查找不同的不良词,卡在变量列表中,如果有的话

时间:2018-12-21 15:16:09

标签: python

我正在尝试制作一个简单的python脚本来检查RSS feed中的不良单词。提要本身可以正常工作,此复制粘贴也可以处理一个错误的单词,但是我检查多个单词的时间不好。

我曾尝试将变量错误单词制作为列表,例如:

badword = ["badword", "badderword"] 

但我知道

  

TypeError:“ in”要求将字符串作为左操作数,而不是列表。

我也尝试过使用“如果有的话”,但恐怕我也没有正确地使用它。

feed = "emulating rss feed test ok badword"
badword = "bad"

print("Feed:  " + feed)
print("Bad word: " + str(badword))

if badword not in feed:
    print("Not bad")
else:
    print("Is bad")

2 个答案:

答案 0 :(得分:1)

您可以使用any来检查供稿中是否包含这些不良词:

>>> feed = "emulating rss feed test ok badword"
>>> badword = ["badword", "badderword"]
>>> any(bw in feed for bw in badword)
True

但是如果一个坏词是一个非坏词的一部分,这可能会失败:

>>> feed = "emulating rss feed test ok notreallyabadword"
>>> any(bw in feed for bw in badword)
True

相反,我建议使用正则表达式,将不良词与|结合在一起,并用词边界字符\b对其进行定界。这也可以使用标点符号。

>>> import re
>>> p = r"\b" + "|".join(badword) + r"\b"
>>> re.search(p, feed) is not None
False

答案 1 :(得分:0)

您可以转换为列表,然后比较列表:

>>> feed = "emulating rss feed test ok badword"
>>> feedlist = feed.split()
>>> feedlist
['emulating', 'rss', 'feed', 'test', 'ok', 'badword']
>>>
>>>
>>> badwords = ['bad','badword']
>>>
>>>
>>> [item for item in feedlist if item in badwords]
['badword']
>>>