2009-11-23 10 views
18

を意図したとおりに動作しますが、あなたはファイルを読み込み、各個々のラインが\nでなく、場合区切られ変換 rのテキスト)Pythonで

f = open('file.txt','r') 
lines = f.readlines() 

を使用して、リストにその行を読み込むことができます行の内容は\rであり、新しい行として扱われません。 \r\nに変換し、正しいリストlinesを取得する必要があります。

linesの中に.split('\r')を書き込むと、リストの中にリストが表示されます。

私は、ファイルを閉じて、もう一度それを読んで、\nにすべて\rを置き換え、ファイルを開くことについて考え、その後readlines()を使用するが、これは無駄なようです。

どうすれば実装できますか?

+0

実は、および'\ n 'で区切られた"実際の "行は、リストの中でリストを取得することは、私にとっては正しいことであると思われます。 –

答えて

44
f = open('file.txt','rU') 

これは、Pythonのuniversal newline support\rを持つファイルは行末として扱われるが開きます。

+3

...この機能は廃止されましたが、Pythonのドキュメントに従って新しいコードで使用すべきではありません。 –

+0

ありがとう!これは意図どおりに機能し、私にとっては十分です。 Tim、これを行う正しい方法は何でしょうか? – greye

+3

Python 3.xでは、ユニバーサル改行のサポートはデフォルトで有効になっているので、何もする必要はありません。 –

3

それは懸念が、バイナリ形式で開いていると、このコードを変換する場合:後者は内部発生した場合、あなたに\ N 'と `\ r`改行`が混在している場合は、

from __future__ import with_statement 

with open(filename, "rb") as f: 
    s = f.read().replace('\r\n', '\n').replace('\r', '\n') 
    lines = s.split('\n')