首页 > 解决方案 > 使用任何关键字都不是按要求过滤

问题描述

我正在尝试使用任何关键字从日志中过滤行。但以下工作

match = [e.strip() for e in config.get('sky_messages', 'matches').split(',')]
with open(SOURCE_FILE+FILE_NAME, "r") as f:
for line in f:
    if any(word in line for word in match):
        pass
    else:
        print (line)

但这就是我想要的[仅列出 word 中不包含任何字符串的行],但它没有按预期工作。我在这里犯了什么错误?

match = [e.strip() for e in config.get('sky_messages', 'matches').split(',')]
with open(SOURCE_FILE+FILE_NAME, "r") as f:
for line in f:
    if any(word not in line for word in match):
        print (line)

标签: pythonpython-3.x

解决方案


这是一个逻辑问题。如果 in 中的任何单词match 不在in 中,您就不会得到这条线line,逻辑应该是如果in 中的所有单词match 都不是in line

所以尝试改变这一行:

    if any(word not in line for word in match):

至:

    if all(word not in line for word in match):

推荐阅读