Écriture de listes Python dans des colonnes en csv

J'ai 5 listes, toutes de la même longueur, et je voudrais les écrire sur 5 colonnes dans un CSV. Jusqu'à présent, je ne peux en écrire qu'un dans une colonne avec ce code:

with open('test.csv', 'wb') as f:
    writer = csv.writer(f)
    for val in test_list:
        writer.writerow([val])

Si j'ajoute une autre boucle for, il écrit simplement cette liste dans la même colonne. Quelqu'un sait un bon moyen d'obtenir cinq colonnes distinctes?

21
demandé sur Mike Mertsock 2013-07-17 19:40:11

3 réponses

Changez-les en lignes

rows = zip(list1,list2,list3,list4,list5)

Alors juste

import csv

with open(newfilePath, "w") as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerow(row)
27
répondu Joran Beasley 2017-09-20 03:00:01

Vous pouvez utiliser izip combiner vos listes, puis réitérer

for val in itertools.izip(l1,l2,l3,l4,l5):
    writer.writerow(val)
4
répondu jh314 2013-07-17 15:45:25

Le code suivant écrit des listes python en colonnes dans csv

import csv
from itertools import zip_longest
list1 = ['a', 'b', 'c', 'd', 'e']
list2 = ['f', 'g', 'i', 'j']
d = [list1, list2]
export_data = zip_longest(*d, fillvalue = '')
with open('numbers.csv', 'w', encoding="ISO-8859-1", newline='') as myfile:
      wr = csv.writer(myfile)
      wr.writerow(("List1", "List2"))
      wr.writerows(export_data)
myfile.close()

La sortie ressemble à ceci

entrez la description de l'image ici

4
répondu Ashok Kumar Jayaraman 2017-11-17 13:40:35