我正在尝试使用python逐行搜索日志文件。
我想捕获包含两个字符串"apple" and "banana"
的行。
有些行只包含"apple"
,有些行只包含"banana"
。如何检查该行是否包含两个字符串,然后进入下一个条件?
以下是我现在正在做的事情,现在还没有。
APPLE = "APPLE"
FAILURE_MSGS {
APPLE: "apple"
}
for line in out.splitlines():
if FAILURE_MSGS[APPLE] and "banana" in line:
<do something special with this line>
需要注意的是,您可能会注意到,"apple"
是从其他人的预期失败消息列表中预定义的,我也希望找到"banana"
,但我不应该将其添加到FAILURE_MSGS的词典。
最终发生的是每条线都有“苹果”或“香蕉”,而不仅仅是它找到两者。不知道为什么..
答案 0 :(得分:2)
你需要改变自己的状况。现在,你正在测试“苹果”是否属实,以及“香蕉”是否在线。你最终会得到包含“banana”的所有行。
如果您将其更改为:
if FAILURE_MSGS[APPLE] in line and "banana" in line:
然后你应该得到你期望的行为(只处理包含“apple”和“banana”的行。)
答案 1 :(得分:1)
正确的代码是:
for line in out.splitlines():
if FAILURE_MSGS[APPLE] in line and "banana" in line:
<do something special with this line>
您的代码正在做什么:
所以你会得到所有拥有&#34; banana&#34; - 不管&#34; apple&#34;