Éviter le phénomène d'insertion de lignes vides lors de la sortie de Python CSV

introduction

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

environnement

Code en question


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"])

Solution

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"])

Remarques

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.

référence

https://qiita.com/ryokurta256/items/defc553f5165c88eac95 Python: open: newline Python: csv: lineterminator

Recommended Posts

Éviter le phénomène d'insertion de lignes vides lors de la sortie de Python CSV
Importez un module souvent utilisé lors du démarrage de l'interpréteur python
Sont Php / Ruby / Python qui ne s'exécute que lorsque le fichier est appelé directement
[Python] Solution au problème que les éléments sont liés lors de la copie d'une liste
[Python: UnicodeDecodeError] L'une des solutions d'erreur lors de la lecture de CSV
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Vérification de la théorie selon laquelle "Python et Swift sont assez similaires"