我有一個關於python的簡短問題: 如何從文件讀取特定行? 通過使用多個過濾器,波紋管是我當前的代碼,這並不表明預期的結果對我來說:如何從Python中的多個條件的文件中打印行?
for line in loglist:
if (str('send') and str('packet')) in line:
print line
所以,我要的是打印同時包含單詞「發送」線和「包」 , 但它打印所有包含發送或數據包的行。
許多在此先感謝球員,
我有一個關於python的簡短問題: 如何從文件讀取特定行? 通過使用多個過濾器,波紋管是我當前的代碼,這並不表明預期的結果對我來說:如何從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檢查,這很可能是f比上述更重要。
非常感謝兄弟,第二個版本非常完美! – psilos
你應該分開你的條件: -
if ('send' in line) and ('packet' in line):
print line
如果你這樣做: -
if (str('send') and str('packet')) in line:
它類似於說: -
if 'packet' in line:
因爲,內條件是and
其中返回s last
假值或如果全部爲真,則返回最後一個值。
所以,str('send') and str('packet')
相當於'packet'
而且你不需要他們周圍str
包裝。
如果您在python shell中嘗試(str()..和..str())表達式,您會發現結果是「數據包」,也就是最後一個術語,因爲操作強制執行所有評估條款。我的直觀方法是正則表達式匹配,但即使這可能會更快,但它不會比給出答案中的解決方案更漂亮,特別是如果單詞可能以任何順序出現。 – guidot