10

file.readlinesファイル全体を1行ずつ読み取り、リストに保存することを読みました。そのようなファイルがある場合-

Sentence 1
Sentence 2
Sentence 3

readlinesそして、私は各文を次のように印刷するために使用します-

file = open("test.txt") 
for i in file.readlines():
    print i

出力は

Sentence 1

Sentence 2

Sentence 3

私の質問は、各文の間に余分な行があるのはなぜですか?どうすればそれを取り除くことができますか?

アップデート

を使用i.stripすると、余分な行も削除されることがわかりました。なぜこれが起こるのですか?私の知る限りsplit、文字列の末尾と先頭の空白を削除します。

4

5 に答える 5

11

file.readlines()文字列のリストを返します。各文字列には末尾の改行が含まれます。printステートメントは、渡されたパラメーターを newlnie. で出力します。; そのため、余分な行が表示されます。

余分な改行を削除するには、次を使用しますstr.rstrip

print i.rstrip('\n')

または使用sys.stdout.write

sys.stdout.write(i)

ところで、file.readlines一度にすべての行が必要でない限り、使用しないでください。ファイルを繰り返すだけです。

with open("test.txt") as f:
    for i in f:
        print i.rstrip('\n')
        ...

アップデート

Python 3 では、print印字が改行の後に続くのを防ぐために、 を使用できますprint(i, end='')

Python 2 では、次のようにすると同じ機能を使用できます。from __future__ import print_function

更新への回答

タブ、改行も空白と見なされます。

>> ' \r\n\t\v'.isspace()
True
于 2013-11-04T06:05:19.917 に答える
1

以下は改行を取り除きます。

i = i.rstrip("\n") #strips newline

お役に立てれば。

于 2013-11-04T06:34:26.853 に答える
1
file.readlines()

(およびfile.readline()) には改行が含まれます。

行う

print i.replace('\n', '')

あなたがそれらを望まない場合。

行末に改行を含めるのは奇妙に思えるかもしれませんが、これにより、たとえば、最後の行に改行文字があるかどうかを知ることができます。その場合、多くの言語の I/O では注意が必要です。

于 2013-11-04T06:06:15.433 に答える
0
with open(txtname, 'r') as txtfile:
    lines = txtfile.readlines()
    lines = [j for j in lines if j != '\n']
with open(outname, 'w') as outfile:
    outfile.writelines(lines)
于 2020-11-07T18:38:21.677 に答える