Pythonのcsvライブラリは常にDOSの行末文字を生成します。'wb'
モードを使用していても、 Linux。
import csv
f = open('output.txt', 'wb');
writer = csv.writer(f)
writer.writerow([2,3,4]);
f.close()
上記のコードでは、行の区切り記号として常に'\r\n'
を使用しています。 '\n'
のみを使用するにはどうすればよいですか?
writer
インスタンスにコンストラクタでカスタム lineterminator
引数を指定できます。
writer = csv.writer(f, lineterminator="\n")
Niklasが回答 と同様に、 lineterminator引数 を使用すると、行末を選択できます。 '\n'
にハードコーディングするのではなく、プラットフォームの 行区切り記号 :os.linesep
を使用して、プラットフォームに依存しないようにします。また、Python 3( this コメントを参照)には、必ずnewline=''
を指定してください。
import csv
import os
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f, lineterminator=os.linesep)
writer.writerow([2, 3, 4])
Python 2の場合、'wb'
モードを使用します( docs を参照)。
import csv
import os
with open('output.csv', 'wb') as f:
writer = csv.writer(f, lineterminator=os.linesep)
writer.writerow([2, 3, 4])
Python 2.(Python 3、これを使用している場合、これを使用している場合は、この投稿を見つけた他の人が'wb'
問題はPythonによって処理されます。GNU/ Linuxのような一部のプラットフォームでは欠落していても問題に気付くことはありませんが、そのファイルを バイナリモード で開くことは重要です。 Windowsのように重要です。それ以外の場合、csvファイルは\r\r\n
のような行末になる可能性があります。'wb'
とos.linesep
を使用する場合、すべてのプラットフォームで行末が正しいはずです。