web-dev-qa-db-fra.com

L'écriture au format CSV avec Python ajoute des lignes vides

J'essaie d'écrire dans un fichier CSV, mais il y a des lignes vides entre les deux. Comment puis-je supprimer les lignes vides?

import csv
b = open('test.csv', 'w')
a = csv.writer(b)
data = [['Me', 'You'],\
        ['293', '219'],\
        ['54', '13']]
a.writerows(data)
b.close()
76
user2031063

La façon dont vous utilisez le module csv a changé dans Python 3 à plusieurs égards (docs) , du moins en ce qui concerne la manière dont vous devez ouvrir le fichier. Quoi qu'il en soit, quelque chose comme

import csv
with open('test.csv', 'w', newline='') as fp:
    a = csv.writer(fp, delimiter=',')
    data = [['Me', 'You'],
            ['293', '219'],
            ['54', '13']]
    a.writerows(data)

devrait marcher.

116
DSM

Si vous utilisez Python 2.x sous Windows, vous devez modifier votre ligne open('test.csv', 'w') en open('test.csv', 'wb'). C'est-à-dire que vous devriez ouvrir le fichier en tant que fichier binaire .

Cependant, comme indiqué par d'autres, l'interface de fichier a été modifiée dans Python 3.x.

21
Wilduck
import csv

hello = [['Me','You'],['293', '219'],['13','15']]
length = len(hello[0])

with open('test1.csv', 'wb') as testfile:
    csv_writer = csv.writer(testfile)
    for y in range(length):
        csv_writer.writerow([x[y] for x in hello])

produira une sortie comme celle-ci

Me You
293 219
13 15

J'espère que cela t'aides

15
John Smith

Vous devez ouvrir le fichier en mode binaire b pour prendre soin des lignes vides dans Python 2. Cela n'est pas obligatoire dans Python 3.

Donc, changez open('test.csv', 'w') en open('test.csv', 'wb').

5
Aditya

Pyexcel fonctionne parfaitement avec Python2 et Python3 sans problèmes.

Installation rapide avec pip:

pip install pyexcel

Après cela, seulement 3 lignes de code et le travail est terminé:

import pyexcel
data = [['Me', 'You'], ['293', '219'], ['54', '13']]
pyexcel.save_as(array = data, dest_file_name = 'csv_file_name.csv')
3
Danny Lessio