多个条件不起作用

时间:2013-09-26 09:41:40

标签: python operators conditional-statements

我有以下代码

if "[FAILED]" in line and (("Result:" not in line) or ("Date:" not in line)):
    print line

我正在逐行阅读文本文件。我想在文本文件“[FAILED]”的任何地方寻找,但它不能在同一行中有“Result:”或“Date:”。

我的代码目前打印出该行,即使其中包含结果或日期。

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

括号中的条件之间需要and

布尔逻辑很棘手,如果经常有助于通过示例。考虑这一行:

FAILED blah blah Date: blah

所以,逐个完成你的条件:

  • 失败就在行中,所以让我们检查下一个条件。
  • “结果:”不在该行中,因此该部分为真。
  • 我们有一个OR,我们已经有了一个True结果,所以甚至不需要检查“Date:”是否在行中。
  • 所以AND的两边都是真的,所以整个事情都是真的。

显然,如果该行包含“Result:”而不是“Date:”,则会发生完全相同的情况。

如果您在parens中有AND,则需要检查两个“Date”是否在行中并且“Result”不在行中,而不是在时感到高兴> 不存在。

表达可能更清楚的条件的另一种方式是:

if "[FAILED]" in line and not (("Result:" in line) or ("Date:" in line)):