2

Python に関する短い質問があります: ファイルから特定の行を読み取るにはどうすればよいですか? 複数のフィルターを使用することにより、期待される結果が表示されない現在のコードを以下に示します。

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

だから、私が望むのは、「send」と「packet」の両方の単語を含む行を印刷することですが、send または packet のいずれかを含むすべての行を印刷します。

よろしくお願いします。

4

4 に答える 4

3

一方通行:

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

これは、任意の数の条件にスケールアップする必要がある場合に最も効率的な方法です...

別の方法:

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

わずか 2 回のチェックで、これは上記よりも高速になる可能性があります。

于 2012-10-26T14:39:37.060 に答える
3

条件を分離する必要があります: -

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

もしあなたがそうするなら: -

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

これは次のように言うのと似ています: -

if 'packet' in line:

内部条件はfalse 値and返すlast、すべてが True の場合は最後の値を返すためです。

したがって、str('send') and str('packet')と同等です'packet'

strそして、それらを包み込む必要はありません。

于 2012-10-26T14:40:10.077 に答える
0

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

「パケット」と評価され、常に true になります (必要なものではありません)。試す

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

于 2012-10-26T14:40:39.593 に答える
-1

(str('send') and str('packet'))に評価されTrueます。だからあなたは言っていますがTrue in line、もちろんうまくいきません。必要なのは

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

ところで、文字列で実行しても意味がありませんstr()。なぜ文字列を文字列に変換するのでしょうか?

于 2012-10-26T14:40:44.767 に答える