python – “if any”检测到的列表的显示元素

我正在使用一个简单的系统来检查一些禁止的单词当前是否在字符串中但是我想改进它以显示有问题的单词所以我添加了该行

print ("BANNED WORD DETECTED : ", word)

但是我得到了错误

"NameError: name 'word' is not defined"

如果认为问题是我的系统只是检查列表中是否有任何单词没有“存储”某处,也许我误解了python列表系统,我应该修改什么建议?

# -*- coding: utf-8 -*-

bannedWords = ['word1','word2','check']
mystring = "the string i'd like to check"

if any(word in mystring for word in bannedWords):
    print ("BANNED WORD DETECTED : ", word)
else :
    print (mystring)

最佳答案 any()不适用于此,使用带有next()的生成器表达式或列表推导:

banned_word = next((word for word in mystring.split() if word in bannedWords), None)
if banned_word is not None:
   print("BANNED WORD DETECTED : ", word)

或者多个单词:

banned_words = [word for word in mystring.split() if word in bannedWords]
if banned_words:
    print("BANNED WORD DETECTED : ", ','.join(banned_words))

对于改进的O(1)成员资格测试,将禁止词设为一组而不是列表

点赞