Python 3.x Python在strong中查找几个特定的单词

Python 3.x Python在strong中查找几个特定的单词,python-3.x,Python 3.x,因此,我发现在数组中查找单词的精确匹配似乎相当直接,比如说: color_list = ["red", "blue", "green"] message = "blue" y = any(x in message for x in color_list) print y >>> True 然而,当我寻找不完全匹配的时候,比如说,它写为大写,我可以用 filter = message.lower()

因此,我发现在数组中查找单词的精确匹配似乎相当直接,比如说:

color_list = ["red", "blue", "green"]
message = "blue"
y = any(x in message for x in color_list)
print y
>>> True
然而,当我寻找不完全匹配的时候,比如说,它写为大写,我可以用

filter = message.lower()
但是当消息变成类似“蓝色!”、“红色”、“蓝莓”甚至是一个完整的句子“我喜欢蓝色!”时,我无法用我在一个函数中找到的任何方式过滤掉它。我已经找到了一个解决办法,通过组合几个for函数,但它感觉有点笨重,会循环使用它们,我不知道如何停止它

    if data.msg == 'e80fc66b':
        filtered = list(data.user_input.lower().split())
        r = re.compile('.*red.*')
        for match in [line for line in filtered if r.match(line)]:
            print("RED")
        r = re.compile('.*orange.*')
        for match in [line for line in filtered if r.match(line)]:
            print("ORANGE")
任何帮助都将不胜感激

我有一点建议:

n = input()
color_list = ["red", "blue", "green"]

for i in range(len(color_list)):
    if color_list[i] in n:
        print(f"Contains {color_list[i]}")
        break
这将是我的方式,如果你有任何问题,这是如何工作的,请添加一个评论我的答案。 编辑:
它现在在找到一个后停止

为什么不合并正则表达式?e、 g..
*红色。*|.*橙色。*|.*蓝色。*
我希望能够在不同的命令中使用它。如果我扩展正则表达式,我将不知道哪一个更受欢迎。我喜欢这个,它更优雅。我怎样才能在找到if后立即停止它?Kagetaze编辑:)