0
大きなファイルに改行文字を取り除く必要があるf
私は一度に2行ずつ解析しています。例えばこのような。Python:複数の行レコードをforループで構文解析し、生成元を使ってstr.rstrip()を呼び出す
def foo(f):
with open(f, "r") as f:
for n, s in zip(f, f):
#something with `n` and `s`
はそれがfor
ループラインに直接str.rstrip
することが可能であるか、私はfor
ループ本体内別にそれを実行する必要があります。これは、(それがより簡潔にするために更新質問)for n, s in zip(f.rstrip(), f.rstrip()):
動作しない
UPDATE:
def foo2(f):
with open(f, "r") as f:
for n, s in zip ((line.rstrip() for line in f), (line.rstrip() for line in f)):
#Do something with `n` and `s`
と
:以下PaulCorneliusからBarmarの回答やコメントからこれらのソリューション
def foo3(f):
with open(f, "r") as f:
g = (line.rstrip() for line in f)
for n, s in zip(g, g):
#Do something with `n` and `s`
UPDATE 2:
あなたはいくつかのファイルを解析したい場合は1(ここでは二つのファイル)ファイルごとに1つの発電を行うことができます。
def foo4(f1, f2):
with open(f1, "r") as f1, open(f2, "r") as f2:
g1, g2 = (line.rstrip() for line in f1), (line.rstrip() for line in f2)
for n1, s1, n2, s2 in zip(g1, g1, g2, g2):
#Do something with `n1`, `s2, `n2` and `s2`
ああ - 素敵。それは体のラインよりも効率的でしょうか? – user3375672
おそらくほぼ同じです。 – Barmar
OPは 'f1'からのものと' f2'からのものの代わりに、 'f1'からの2行を使うつもりはありませんか? – gyre