Écrivain csv Python mauvais séparateur?
Avertissement: je suis en Europe.
Selon cette page Excel utilise le point-virgule ;
comme séparateur par défaut en Europe afin de "prévenir les conflits" avec la virgule décimale.
Maintenant, j'ai ce code Python:
import csv
data = [["test", "data"], ["foo", "bar"]]
writer = csv.writer(open("data.csv", "wb"), dialect="excel")
writer.writerows(data)
Qui devrait générer ce fichier:
test;data
foo;bar
mais au lieu de cela, il utilise des virgules. Pourquoi est-ce arrivé? locale.getdefaultlocale()
retourne ('nl_NL', 'cp1252')
.
source d'informationauteur orlp
Vous devez vous connecter pour publier un commentaire.
C'est parce que le csv.excel dialecte n'est pas locale au courant. Si vous souhaitez utiliser explicitement des points-virgules comme séparateur, alors vous devez soit explicitement passer le séparateur csv.ouvrir en tant que
ou créer un nouveau dialecte, et de l'inscrire
Dans les deux cas, vous devez tester comment les nombres à virgule flottante sont écrits ... je soupçonne qu'ils ne seront pas écrits dans le format Européen que vous désirez (avec une virgule comme radix)
La
excel
dialecte est spécifié par les attributs suivants (enLib/csv.py
ligne 57):Je ne vois pas d'indice, c'est en quelque sorte dépendant de paramètres régionaux - par conséquent, vous obtiendrez toujours
,
avec la valeur par défaut dialecte.Mais c'est facilement corrigé, par exemple