1

ファイルから行を読み取って、機能するループでそれらを印刷しようとしていますが、すべての印刷ステートメントの後に改行を取得します。

これが私のクラスです

class FileReader:
    """Reads a file from args"""
    def __init__(self, args):
        input = ''
        with open(args, 'r') as rFile:
            for line in rFile:
                print(line)

私の入力ファイルはこんな感じです。('$'は新しい行です):

12 3$
2$
9$
5$
3 4$

私の出力は次のようになります。

12 3

2

9

5

3 4

私がそれらのスペースを取得している理由は何ですか?

4

3 に答える 3

3

ファイルをループすると、生成される行には行末に改行が含まれます。Usingは、余分な改行print()を含む行を出力します。

を使用.strip()して、改行を含む行の先頭と末尾から空白を削除できます。

末尾の改行のみを削除する場合は、line[:-1]またはline.rstrip('\n')を使用して削除します。

最後になりましたがprint()、改行を追加しないように指示することもできます。

print(line, end='')
于 2012-12-07T17:57:17.453 に答える
0

新しい行が必要ない場合は、rstripを使用してください。例えば:

print(line.rstrip())
于 2012-12-07T17:58:54.463 に答える
0

すべてprintのコマンドは、最後に改行を自動的に追加します。ファイルにはすでに各行の末尾に改行があるため (定義により)、プログラムは 2 つの改行を連続して出力します。

たとえば、これを試してください:

for i in xrange(10):
    print(str(i) + '\n')

コードと同じ「問題」で何かが得られます。

その動作を修正したい場合は、各行の末尾からすべての空白文字を削除するprint(line)に置き換えます。print(line.rstrip())行がタブまたはスペースで終わっている場合、これは問題になる可能性があります。その場合は、print line.rstrip('\n')改行文字のみを削除する を使用してください。

于 2012-12-07T17:53:51.913 に答える