Ответ 1
изменить их на строки
rows = zip(list1,list2,list3,list4,list5)
тогда просто
import csv
with open(newfilePath, "w") as f:
writer = csv.writer(f)
for row in rows:
writer.writerow(row)
У меня есть 5 списков с одинаковой длиной, и я бы хотел записать их в 5 столбцов в CSV. До сих пор я могу написать только один столбец с этим кодом:
with open('test.csv', 'wb') as f:
writer = csv.writer(f)
for val in test_list:
writer.writerow([val])
Если я добавлю еще один цикл for
, он просто записывает этот список в тот же столбец. Кто-нибудь знает хороший способ получить пять отдельных столбцов?
изменить их на строки
rows = zip(list1,list2,list3,list4,list5)
тогда просто
import csv
with open(newfilePath, "w") as f:
writer = csv.writer(f)
for row in rows:
writer.writerow(row)
Следующий код записывает списки Python в столбцы в 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()
Вывод выглядит так
Вы можете использовать izip
для объединения ваших списков, а затем итерации их
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)
Если вы счастливы использовать стороннюю библиотеку, вы можете сделать это с помощью Pandas. Преимущества включают беспрепятственный доступ к специализированным методам и маркировку строк/столбцов:
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
Я не хотел импортировать ничего, кроме csv, и все мои списки содержат одинаковое количество элементов. Верхний ответ здесь, кажется, состоит из списков в одну строку вместо одного столбца каждый. Таким образом, я взял ответы здесь и придумал это:
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()