2

テキスト ファイルから約 5000 行のコードを読み取り、解析した値を解析して別のテキスト ファイルに保存しようとしています。

ただし、これを実行できるのは最初の 967 行のみです (出力ファイルに示されているように、最初の 967 行の解析値のみが含まれています)。

これは、この仕事をするために私が書いた簡単なコードです。

infile = open("Input.txt", "r")
outfile = open("Output.txt", "w")
for line in infile.readline():
    temp = infile.readline()
    value = temp.split("<_|_>")
    outfile.write(value[1])

他の 4000 奇数の値をどのように書きますか?

4

3 に答える 3

17

なぜなら、for反復はの行ではinfileなく、最初の行の文字を超えているからです。おそらく、最初の行は967文字の長さです。

for line in infile.readline()infileから最初の行を文字列として読み取っていることを意味します。文字列は、文字列を反復処理する方法で、その文字列内の文字を反復処理する方法で反復可能です。したがって、その行のすべての文字に対して毎回ループを実行しています。

あなたがしたいことは、おそらく、むしろ、このようなものです:

with open("Input.txt", "r") as infile, open("Output.txt", "w") as outfile:
    for line in infile:
        outfile.write(line.split("<_|_>")[0])

Pythonのファイルオブジェクトも反復可能です。それらを反復処理すると、各行が反復処理されます。代わりに(注:、ではなく)を使用することもできますが、それは反復する前にすべての行を1つの巨大な配列に読み込みます。ファイルオブジェクトを直接反復すると、一度に最新の読み取り行のみがメモリに保持されます。for line in infile.readlines()readlinesreadlineinfile

于 2012-12-30T07:44:26.043 に答える
-1

各行を読んで解析する必要があります。入力ファイルの単一行で for ループを実行しています。簡単なアプローチは、while ループを使用することです。

f1 = open('Input.txt','r')
f2 = open('Output.txt','w')
line = f1.readline()
while line:    
    value = line.split('<_|_>')
    f2.write(value[0])
    line = f1.readline()
于 2012-12-30T08:02:25.483 に答える