76 votes

Écrire dans un fichier csv Python

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?

Merci d'avance.

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

116voto

DSM Points 71975

La façon dont vous utilisez le module csv changé dans Python 3 à plusieurs égards (docs) , du moins en ce qui concerne la façon 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.

21voto

Wilduck Points 5116

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 d'autres l'ont indiqué, l'interface de fichier a été modifiée dans Python 3.x.

15voto

John Smith Points 335
 import csv

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

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

produira quelque chose comme ça

 Me You
293 219
54 13
 

J'espère que cela t'aides

5voto

Aditya Points 322

Vous devez ouvrir le fichier en mode binaire b pour vous occuper des lignes vides dans Python 2. Cela n'est pas requis dans Python 3.

Ainsi, changez open('test.csv', 'w') à open('test.csv', 'wb') .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X