如果程序包含列表中的一个字符串,则程序不会显示字符串

时间:2018-05-10 02:27:30

标签: python filter any

我想过滤一些我得到的字符串。例如,我有这个字符串:

str = "I just go on Facebook today"

列出了这样的禁止词:

banned_words = ["facebook", "Facebook", "Netflix"]

我怎么能这样做:"如果字符串"中没有禁止的单词,那么我可以处理字符串吗?

通过一些搜索我找到函数any并尝试类似:

if any(word not in str for word in banned_words):

但并非根本不起作用:/

4 个答案:

答案 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