Lorsque j'ai essayé de générer un fichier CSV à partir de Python sous Windows, une ligne vide a été insérée pour chaque ligne, j'ai donc laissé une solution de contournement.
CSV de sortie
a,b,c
d,e,f
g,h,i
import csv
with open("./test.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(["a", "b", "c"])
writer.writerow(["d", "e", "f"])
writer.writerow(["g", "h", "i"])
Je ne me souviens pas être devenu Mac et Linux, alors j'ai pensé que c'était un problème dans l'environnement Windows. On pense que CRLF a un effet, nous essaierons donc d'éviter CRLF.
open: newline
Un argument qui spécifie la destination de conversion du séparateur de ligne.
S'il n'est pas spécifié, il sera converti en saut de ligne par défaut du système.
Dans le cas de Windows, il s'agit de CRLF, mais comme des lignes vides apparaîtront, spécifiez `` '' ou
\ n`.
Si vous spécifiez «» ou «\ n», la conversion ne sera pas effectuée et la sortie sera telle quelle.
import csv
with open("./test.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["a", "b", "c"])
writer.writerow(["d", "e", "f"])
writer.writerow(["g", "h", "i"])
writer: lineterminator
Un argument pour représenter la fin de chaque ligne.
Le cas par défaut est \ r \ n
, spécifiez donc \ n
.
with open("./test.csv", "w") as f:
# writer = csv.writer(f)
writer = csv.writer(f, lineterminator="\n")
writer.writerow(["a", "b", "c"])
writer.writerow(["d", "e", "f"])
writer.writerow(["g", "h", "i"])
Dans le cas de python2.7, il n'y a pas de nouvelle ligne, donc je pense que ce sera un moyen d'utiliser le terminateur de ligne de csv.writer. Si c'est io.open, il y a un argument de nouvelle ligne, mais la chaîne de caractères à écrire est capturée autour du codage et je ne l'ai pas étudiée en détail.
https://qiita.com/ryokurta256/items/defc553f5165c88eac95 Python: open: newline Python: csv: lineterminator
Recommended Posts