我有一个关于python的简短问题: 如何从文件中读取特定行? 通过使用多个过滤器,下面是我当前的代码,它没有显示我的预期结果:
for line in loglist:
if (str('send') and str('packet')) in line:
print line
所以,我想要的是打印包含“发送”和“数据包”字样的行, 但它会打印包含发送或数据包的所有行。
非常感谢先生们,
答案 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()
没有意义,为什么要将字符串转换为字符串?