1

各数値がファイルに表示される回数を数え、元の数値とそのカウントを別のファイルに出力しようとしています。元の番号は昇順にソートされます。カウントは十分に近いですが、問題は最後のフォーマットです。どういうわけか私がそれらを印刷する順序を逆にしています!

これは私のコードです:

with open(filename) as f:
    prevLine=f.readline()
    out = open(outfile,'w')
    for line in f:
        if line == prevLine:
            curCount = curCount+1
        else:
            out.write("%s \t\t %d\n" % (prevLine , curCount))
            curCount =1
        prevLine=line
    out.close()

最初の数行は次のようにする必要があります。

1     7935
2     4455
3     2956

1 が 7,935 個、2 が 4,455 個、3 が 2,956 個あります。しかし、作成した新しいファイル (outfile) を見ると、次のようになります。

1
     7935
2
     4455

改行は、数字の間ではなく、最後にある必要があります。なぜこうなった?

4

2 に答える 2

4

の最後にまだ改行がありprevLineます。書き込み行を次のように変更します。

out.write("%s \t\t %d\n" % (prevLine.rstrip() , curCount))
于 2013-04-08T19:45:26.800 に答える
0

\nの改行文字を忘れたout.write("%s \t\t %d\n" % (prevLine , curCount))

また、Python で古い printf フォーマットを使用することはお勧めしません。個人的に私はこれを好みます:str_output="""{prev_line}\t\t {current_count}\n""".format(prev_line=prevLine,current_count=curCount)

@mtadd の回答が言うように、文字列rstrip()から改行を削除するために使用しprevLineます。

与える:

str_output="{prev}\t\t {cur_cnt}\n".format(prev=prevLine.rstrip(),cur_cnt=curCount) 
out.write(str_output)
于 2013-04-08T19:37:35.790 に答える