Maison > développement back-end > Tutoriel Python > Pourquoi ma sortie CSV Python a-t-elle des retours chariot supplémentaires sous Windows ?

Pourquoi ma sortie CSV Python a-t-elle des retours chariot supplémentaires sous Windows ?

Patricia Arquette
Libérer: 2024-12-03 19:30:13
original
481 Les gens l'ont consulté

Why Does My Python CSV Output Have Extra Carriage Returns on Windows?

Problème de retour chariot supplémentaire du fichier de sortie CSV sous Windows en Python

Lors de la génération de fichiers CSV en Python, il est possible d'ajouter par inadvertance un chariot supplémentaire revenir à la fin de chaque ligne. Ce comportement peut être observé dans le code suivant :

import csv

with open('test.csv', 'w') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(['hi', 'dude'])
    writer.writerow(['hi2', 'dude2'])
Copier après la connexion

Sortie attendue :

hi,dude
hi2,dude2
Copier après la connexion

Sortie réelle (Windows) :

hi,dude\r\r\nhi2,dude2\r\r\n
Copier après la connexion

Causes et résolution pour Python 3 :

Dans Python 3, ce problème survient en raison de la traduction de nouvelle ligne universelle par défaut fonctionnalité. Pour le résoudre, ouvrez le fichier avec newline='' pour désactiver cette traduction :

with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    ...
Copier après la connexion

Causes et résolution pour Python 2 :

Sous Windows en Python 2 , ce problème se produit car CSV est considéré comme un format binaire et rn est le séparateur d'enregistrements. Si le fichier est ouvert en mode texte, Python remplace le n par rn, ce qui entraîne un double retour chariot. La solution est de toujours ouvrir les fichiers en mode binaire :

with open('test.csv', 'wb') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    ...
Copier après la connexion

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