Nach dem its documentation sollte csv.writer standardmäßig '\ r \ n' als Lineterminator verwenden.Python 2 CSV Writer produziert falsche Leitungsabschluss unter 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")
Dieser druckt
\r\n
\r\n
wie erwartet. Aber die csv-Datei verwendet das lineterminator '\ r \ r \ n'
0,1,2,3,4
0,-1,-2,-3,-4
a,b,c,d,e
A,B,C,D,E
Ist das ein Bug oder ist es etwas falsch in meinem Gebrauch von csv.writer?
Python-Version:
Active 2.6.2.2 (Active Software Inc.), basierend auf Python 2.6.2 (R262: 71600, 21. April 2009, 15.05.37) [MSC v 0,1500 32 Bit (Intel)] auf win32
auf Windows Vista
Ich kann Ihr Problem nicht reproduzieren: $ Datei test.csv test.csv: ASCII-Text, mit CRLF Zeilenabschluss –
@lutz: $ prompt bedeutet * x was bedeutet keinen Unterschied (in Python 2.x) zwischen Text Modus und Binärmodus; OP läuft Windows. –
@wierob: verliere die .replace (...). Replace (...), benutze die eingebaute repr() –