Maison > développement back-end > Tutoriel Python > Comment puis-je empêcher les lignes vides dans les fichiers CSV générés par Python ouverts dans Excel ?

Comment puis-je empêcher les lignes vides dans les fichiers CSV générés par Python ouverts dans Excel ?

Susan Sarandon
Libérer: 2024-12-30 01:18:10
original
936 Les gens l'ont consulté

How Can I Prevent Blank Lines in Python-Generated CSV Files Opened in Excel?

Éviter les lignes vides dans les fichiers CSV écrits avec Python

Lors de l'écriture de fichiers CSV avec Python, des lignes vides peuvent apparaître entre les lignes lorsque le fichier résultant est ouvert dans Microsoft Excel. Cet article explique pourquoi ce problème se produit et propose des solutions pour supprimer les lignes vides supplémentaires.

Causes des lignes vides

Le problème réside dans la façon dont Python gère les fins de ligne dans les fichiers CSV. Le module csv.writer contrôle directement les fins de ligne et, par défaut, il ajoute à la fois un retour chariot (r) et une nouvelle ligne (n) au fichier, ce qui entraîne une ligne vierge supplémentaire dans Excel.

Solutions pour Windows

Pour les systèmes Windows, le fichier Python doit être ouvert en mode texte non traduit à l'aide du paramètre newline=''. Ce paramètre indique à Python de ne pas traduire le caractère de nouvelle ligne par défaut (n) en séquence de nouvelle ligne spécifique à Windows (rn).

Utilisation de l'instruction with :

with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile)
Copier après la connexion

Utilisation du module Path :

from pathlib import Path

with Path('/pythonwork/thefile_subset11.csv').open('w', newline='') as outfile:
    writer = csv.writer(outfile)
Copier après la connexion

Solutions pour Python 2 (Windows et Non-Windows)

Pour Python 2, utilisez le mode binaire pour ouvrir le fichier de sortie (« wb »), car cela empêche Python de traduire les fins de ligne.

with open('/pythonwork/thefile_subset11.csv', 'wb') as outfile:
    writer = csv.writer(outfile)
Copier après la connexion

Remarques supplémentaires

  • Si vous écrivez des données dans un tampon en mémoire à l'aide de StringIO, la chaîne résultante contiendra la séquence de nouvelle ligne traduite (par exemple, 'rn' sur Windows). Pour éviter cela, utilisez newline='' lors de l'écriture du tampon dans un fichier.
  • Dans Python 2, la gestion des caractères Unicode dans les fichiers CSV nécessite des solutions de contournement supplémentaires en raison des problèmes liés à Unicode. Pensez à utiliser le module uncodecsv tiers à cet effet.

Documentation Liens

  • https://docs.python.org/3/library/csv.html#csv.writer
  • https://docs.python.org/2/library /csv.html#csv.writer

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal