Selon le its documentation csv.writer doit utiliser '\ r \ n' comme lineterminator par défaut.Un auteur CSV Python 2 produit un mauvais terminateur de ligne sous 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")
Imprime
\r\n
\r\n
comme prévu. Mais, le fichier csv créé utilise le lineterminator \ r \ r \ n '
0,1,2,3,4
0,-1,-2,-3,-4
a,b,c,d,e
A,B,C,D,E
Est-ce un bug ou est-il quelque chose de mal dans mon utilisation de csv.writer?
Python version:
ActivePython 2.6.2.2 (ActiveState Software Inc. ) basé sur Python 2.6.2 (R262: 71600 21 Avr 2009, 15:05:37) [MSC v 0,1500 32 bits (Intel)] sur win32
sur Windows Vista
Je ne peux pas reproduire votre problème: $ fichier test.csv test.csv: texte ASCII, avec des terminaisons de ligne CRLF –
@lutz: $ prompt signifie * x ce qui signifie aucune différence (en Python 2.x) entre le texte mode et mode binaire; OP fonctionne sous Windows. –
@wierob: perdez le .replace (...). Replace (...), utilisez le repr ( –