its documentationによれば、csv.writerはデフォルトでリテネレーターとして '\ r \ n'を使用する必要があります。予想通りPython 2 CSVライターがWindows上で間違った行終端文字を生成する
import csv
with open("test.csv", "w") as f:
writer = csv.writer(f)
rows = [(0,1,2,3,4),
(-0,-1,-2,-3,-4),
("a","b","c","d","e"),
("A","B","C","D","E")]
print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n")
writer.writerows(rows)
print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n")
これは
\r\n
\r\n
を印刷します。しかし、作成したCSVファイルには、lineterminatorを使用しています「\ rを\ rを\ n」の
0,1,2,3,4
0,-1,-2,-3,-4
a,b,c,d,e
A,B,C,D,E
これはバグですかcsv.writerの私の使い方で間違った何かがありますか?
Pythonのバージョン:
のActivePython 2.6.2.2(ActiveStateの Software社)のPython 2.6.2 に基づいて(r262:71600、2009年4月21日、夜03時05分37秒) [MSC V文書化されているようにWindows VistaでのWin32
上の0.1500 32ビット(インテル)]
$ file test.csv test.csv:CRLF行ターミネータ付きのASCIIテキスト –
@lutz:$ promptは、* xは、テキスト間の違い(Python 2.x)を意味しません。モードとバイナリモード。 OPはWindowsを実行しています。 –
@wierob:.replace(...)を失う。組み込みのrepr()を使用する。 –