我想过滤一些我得到的字符串。例如,我有这个字符串:
str = "I just go on Facebook today"
列出了这样的禁止词:
banned_words = ["facebook", "Facebook", "Netflix"]
我怎么能这样做:"如果字符串"中没有禁止的单词,那么我可以处理字符串吗?
通过一些搜索我找到函数any
并尝试类似:
if any(word not in str for word in banned_words):
但并非根本不起作用:/
答案 0 :(得分:3)
您可以将in
与for循环
所以它像这样工作
s = "I just go on Facebook today"
banned_words = ["facebook", "Facebook", "Netflix"]
exist = False
for word in banned_words:
if (word in s):
print('banned words "{}" found in str'.format(word))
exist = True
break
if (not exist):
print ('Banned words not found in str')
输出:
banned words "Facebook" found in str
答案 1 :(得分:1)
您应该使用以下
if not any(word for word in banned_words if word in str):print(1)
注意:切勿将关键字用作变量名称。此处str
是关键字。所以,我建议你使用其他一些变量名
答案 2 :(得分:1)
如果banned_words
包含多个项目,您可以将其从list
转换为set
。并检查句子中的所有单词是否都不在banned_words
:
banned_words = set(["facebook", "Facebook", "netflix"])
if all(word not in banned_words for word in sentence.split()):
pass
答案 3 :(得分:1)
如果您只想知道字符串中未包含哪个字,请尝试以下方式:
your_str = "I just go on Facebook today"
banned_words = ["facebook", "Facebook", "Netflix"]
[word for word in banned_words if word not in your_str]
你应该得到如下结果:
['facebook','Netflix']
如果你想知道你的字符串中有哪个单词:
[word for word in banned_words if word in your_str]
[ '实']
您想使用any
来测试它是否存在,这不是一个好方法!应检查结果中的内容! any
只是bool
的检查器,因为它的名称暗示any([True, False, False])
将返回False
,但在这里您可以看到我们所拥有的是string
类型。所以无论你如何尝试,总是返回True
。
>>> any(['a', 'b','c'])
True