python - 使用任何关键字都不是按要求过滤
问题描述
我正在尝试使用任何关键字从日志中过滤行。但以下工作
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)
解决方案
这是一个逻辑问题。如果 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):
推荐阅读
- python - 如何在不使用 XPath 的情况下使用 selenium 获取元素 Datetime?
- node.js - Nodejs不接收jsondata
- python-imaging-library - 如何在 Pillow 中设置后备字体?
- c++ - 在 malloc() 之后声明向量时出错
- angular - 反应式表单异步验证器未清除 FormGroup 中的错误
- java - 如何在 Java (Android Studio) 中从 DialogFlow 获取参数
- angular - 除了用户交互之外,究竟是什么将 Angular2 反应式 FormControl 标记为脏?
- python - 从 matplotlib 排列“数字”?
- javafx - 如何去除javafx按钮下的一行阴影
- c - (C) 使用 /dev/urandom 生成随机数据并将其写入文件