如何在Python中打印具有多个条件的文件中的行?

时间:2012-10-26 14:38:32

标签: python file line conditional-statements

我有一个关于python的简短问题: 如何从文件中读取特定行? 通过使用多个过滤器,下面是我当前的代码,它没有显示我的预期结果:

for line in loglist:
    if (str('send') and str('packet')) in line:
        print line

所以,我想要的是打印包含“发送”和“数据包”字样的行, 但它会打印包含发送或数据包的所有行。

非常感谢先生们,

4 个答案:

答案 0 :(得分:3)

一种方式:

if all( x in line for x in ('send','packet')):

如果您需要扩展到任意数量的条件,这是最有效的方法......

另一种方式:

if ('send' in line) and ('packet' in line):

只需2次检查,这可能比上述更快。

答案 1 :(得分:3)

你应该分开你的条件: -

if ('send' in line) and ('packet' in line):
    print line

如果你这样做: -

if (str('send') and str('packet')) in line:

类似于说: -

if 'packet' in line:

因为,内部条件为and 返回last错误值,或如果all为True,则返回最后一个值。

因此,str('send') and str('packet')相当于'packet'

你不需要str包裹它们。

答案 2 :(得分:0)

(str('send') and str('packet'))

评估“数据包”始终为真(不是您想要的)。尝试

if "send" in line and "packet" in line

答案 3 :(得分:-1)

(str('send') and str('packet'))评估为True。所以你说True in line,当然不行。你需要的是

if 'send' in line and 'packet' in line):
    print line
顺便说一句,在字符串上运行str()没有意义,为什么要将字符串转换为字符串?