Lors de l'écriture d'un fichier CSV en Python, rencontrer des lignes vides séparant chaque ligne dans Microsoft Excel peut être frustrant. Ce problème survient en raison de la manière dont csv.writer gère les fins de ligne.
Dans Python 3, l'ouverture du fichier de sortie en mode texte (« w ») amènera Windows à traduire chaque nouvelle ligne ('n') en un retour chariot et nouvelle ligne (« rn »). Pour éviter cela, le fichier doit être ouvert en mode texte non traduit avec le paramètre newline='' (chaîne vide) :
with open('thefile_subset11.csv', 'w', newline='') as outfile: writer = csv.writer(outfile)
Alternativement, en utilisant la méthode open() du module Path permet également de spécifier le paramètre newline :
from pathlib import Path with Path('thefile_subset11.csv').open('w', newline='') as outfile: writer = csv.writer(outfile)
En Python 2, la solution est d'ouvrir le fichier de sortie dans mode binaire ('wb') au lieu du mode texte ('w') :
with open('thefile_subset11.csv', 'wb') as outfile: writer = csv.writer(outfile)
Pour les opérations en mémoire utilisant StringIO, la chaîne résultante contiendra la ligne spécifique à Windows terminateur (« rn »). Lorsque vous écrivez cette chaîne dans un fichier, n'oubliez pas d'utiliser newline='':
from io import StringIO s = StringIO() writer = csv.writer(s) writer.writerow([1, 2, 3]) with open('thefile_subset11.csv', 'w', newline='') as f: f.write(s.getvalue())
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!