csv.writerows() met saut de ligne après chaque ligne
Ceci est un exemple de la O'Reilly livre de cuisine (tronquée dataset)
headers = ['Symbol','Price','Date','Time','Change','Volume']
rows = [{'Symbol': 'AA', 'Volume': 181800, 'Change': -0.18,
'Time': '9:36am', 'Date': '6/11/2007', 'Price': 39.48},
{'Symbol': 'AIG', 'Volume': 195500, 'Change': -0.15,
'Time': '9:36am', 'Date': '6/11/2007', 'Price': 71.38} ]
with open('stocks2.csv','w') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()
f_csv.writerows(rows)
le fichier de sortie a un \n
à la fin de chaque ligne, et, apparemment, un de plus à la fin. Quand je l'amener dans Excel, j'obtiens des lignes vides entre chaque ligne. Même si je l'ouvre avec Notepad++.
Mais, si je more
si à partir d'une ligne de commande, le \n
ne se présentent pas.
J'ai vu un autre Q&A sur un \n
à la fin d'un fichier, mais celui-ci est un \n
à la fin de chaque ligne. (Et je ne vois pas pourquoi more
ne donne pas l' \n
.)
- Je apporter le fichier dans OpenOffice Calc.
- double possible de Python 3.3 CSV.L'écrivain écrit supplémentaires des lignes vides
- A voté la fermeture des doublons; comme expliqué dans this question (et dans le csv docs), vous devez
newline=''
dans leopen
.
Vous devez vous connecter pour publier un commentaire.
Ce problème se produit uniquement avec Python sur Windows.
En Python v3, vous devez ajouter un saut de ligne=" dans l'appel d'offres ouvert pour:
Python 3.3 CSV.L'écrivain écrit extra vierge lignes
Sur Python v2, vous devez ouvrir le fichier en binaire par un "b" dans votre open() appeler avant de passer au format csv
En changeant la ligne
à:
va résoudre le problème
Plus d'infos sur la question ici:
CSV en Python ajouter un retour chariot supplémentaire
Je suis tombé sur ce problème sur windows pour Python 3. J'ai tenté de changer les paramètre de retour à la ligne lors de l'ouverture du fichier et cela a fonctionné correctement avec
newline=''
.Ajouter
newline=''
à open() méthode comme suit:Il fonctionne comme un charme.
Espère que cela aide.
C'est un retour chariot supplémentaire, et c'est un Windows spécifique de la question qui n'est pas lié à Python 2/3 des différences. Si vous ouvrez votre fichier dans Notepad++ et permettre
Show all characters
, vous verrez suivantes:C'est parce que Python sur Windows est la traduction de votre ligne de fin de
'\n'
à'\r\n'
, tandis que lewriterows()
fonction est déjà l'ajout de'\r\n'
à la fin de chaque ligne. Ce qui se passe:'\r\n'
\n
" et pense qu'il a besoin de changer que de'\r\n'
. Ainsi, vous obtenez le'\r\r\n'
.La raison pour laquelle vous ne voyez pas l'impression de la console ont des problèmes, parce que c'est pas la détection de l'extra
'\r'
comme une nouvelle ligne, où que Excel et Notepad++ sont.Pour Python 3, vous devriez être en utilisant la
newline=''
option, comme indiqué ici: https://docs.python.org/3/library/csv.html.