如何查找列表的一部分是否在str中

Oug*_*ghh -3 python loops

我正在努力做一个审查员.而不是做

if curseword in typed or curseword2 in typed or curseword3 typed:
    print "No cursing! It's not nice!"
Run Code Online (Sandbox Code Playgroud)

我想这样做,以便我可以有一个包含所有单词的列表,并且可以检查这些单词是否在列表中.注意:如果你使用"if any ..."代码,使用while循环,它有太多的输出要处理.

Doo*_*nob 14

你可以使用any加一个发电机:

cursewords = ['javascript', 'php', 'windows']
if any(curseword in input for curseword in cursewords):
    print 'onoes'
Run Code Online (Sandbox Code Playgroud)

或者,为了更灵活,一个正则表达式(如果你想做像检测大写诅咒词的东西):

if re.search(r'javascript|php|windows', input, re.IGNORECASE):
    print 'onoes'
Run Code Online (Sandbox Code Playgroud)

(如果你是regex的新手,Python文档有一个很好的教程.)

如果你只是想在不弄乱regexen的情况下忽略大小写,你也可以这样做:

# make sure these are all lowercase
cursewords = ['javascript', 'php', 'windows']
input_lower = input.lower()
if any(curseword in input_lower for curseword in cursewords):
    print 'onoes'
Run Code Online (Sandbox Code Playgroud)

  • @Oughh我不确定你想说什么.这不是一个无限循环. (2认同)