J'ai 5 listes, toutes de la même longueur, et j'aimerais les écrire sur 5 colonnes dans un fichier 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 connaît un bon moyen d'obtenir cinq colonnes séparées?
les changer en rangées
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)
Le code suivant écrit des listes python dans des colonnes en 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
Vous pouvez utiliser izip
pour combiner vos listes, puis les parcourir
for val in itertools.izip(l1,l2,l3,l4,l5):
writer.writerow(val)
import csv
dic = {firstcol,secondcol} #dictionary
csv = open('result.csv', "w")
for key in dic.keys():
row ="\n"+ str(key) + "," + str(dic[key])
csv.write(row)
Si vous préférez utiliser une bibliothèque tierce, vous pouvez le faire avec les pandas. Les avantages incluent un accès transparent à des méthodes spécialisées et un étiquetage des lignes/colonnes:
import pandas as pd
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
df = pd.DataFrame(list(Zip(*[list1, list2, list3]))).add_prefix('Col')
df.to_csv('file.csv', index=False)
print(df)
Col0 Col1 Col2
0 1 4 7
1 2 5 8
2 3 6 9
Je ne voulais rien importer d'autre que csv, et toutes mes listes contiennent le même nombre d'éléments. La meilleure réponse semble ici faire des listes une ligne chacune, au lieu d’une colonne chacune. Ainsi, j'ai pris les réponses ici et suis venu avec ceci:
import csv
list1 = ['a', 'b', 'c', 'd', 'e']
list2 = ['f', 'g', 'i', 'j','k']
with open('C:/test/numbers.csv', 'wb+') as myfile:
wr = csv.writer(myfile)
wr.writerow(("list1", "list2"))
rcount = 0
for row in list1:
wr.writerow((list1[rcount], list2[rcount]))
rcount = rcount + 1
myfile.close()