我有一个关于 python 的简短问题:如何从文件中读取特定行?通过使用多个过滤器,下面是我当前的代码,它没有为我显示预期的结果:
for line in loglist:
if (str('send') and str('packet')) in line:
print line
所以,我想要打印包含“发送”和“数据包”这两个词的行,但它会打印所有包含发送或数据包的行。
非常感谢你们,
我有一个关于 python 的简短问题:如何从文件中读取特定行?通过使用多个过滤器,下面是我当前的代码,它没有为我显示预期的结果:
for line in loglist:
if (str('send') and str('packet')) in line:
print line
所以,我想要打印包含“发送”和“数据包”这两个词的行,但它会打印所有包含发送或数据包的行。
非常感谢你们,
单程:
if all( x in line for x in ('send','packet')):
如果您需要扩展到任意数量的条件,这是最有效的方法......
另一种方式:
if ('send' in line) and ('packet' in line):
只需 2 次检查,这可能会比上述更快。
你应该分开你的条件: -
if ('send' in line) and ('packet' in line):
print line
如果你这样做: -
if (str('send') and str('packet')) in line:
这类似于说:-
if 'packet' in line:
因为,内部条件是and
返回falselast
值,或者如果全部为 True,则返回最后一个值。
所以,str('send') and str('packet')
等价于'packet'
而且您不需要str
围绕它们进行包装。
(str('send') and str('packet'))
评估为“数据包”总是正确的(不是你想要的)。尝试
if "send" in line and "packet" in line
(str('send') and str('packet'))
评估为True
。所以你说True in line
,这当然行不通。你需要的是
if 'send' in line and 'packet' in line):
print line
顺便说一句,在字符串上运行没有意义str()
,为什么要将字符串转换为字符串?