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'])
Sortie attendue :
hi,dude hi2,dude2
Sortie réelle (Windows) :
hi,dude\r\r\nhi2,dude2\r\r\n
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) ...
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) ...
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!