我正在尝试制作一个简单的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")
答案 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']
>>>