我有一个3D列表,像
final_arr = [[[1,2,3,4],2],[[1,1,2,2],3],[[1,2,2],4]]
现在我要将每一行转换为csv列,例如对于第一个列表项,列应该是csv单行和多列中的1 2 3 4 2
。
现在我正在这样做但是整个列表在csv中变成了单列:
import csv
with open("out1.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(final_arr)
客观是这样的吗?
final_arr = [[[1,2,3,4],2],[[1,1,2,2],3],[[1,2,2],4]]
with open('out1.csv', 'w') as f:
for (i, j) in final_arr:
print(*i, j, file=f)
# out1.csv
1 2 3 4 2
1 1 2 2 3
1 2 2 4
编辑:由@juanpa建议。arrivillaga使用csv模块和writerow
的方法相同:
import csv
with open('out1.csv', 'w', newline="") as f:
writer = csv.writer(f, delimiter=" ")
for (i, j) in final_arr:
writer.writerow((*i, j))
与writerows
:
with open('out1.csv', 'w', newline="") as f:
writer = csv.writer(f, delimiter=" ")
writer.writerows((*i, j) for (i, j) in final_arr)
作为Aivar答案的延伸,
您的列表不是3D列表。它是一个2D列表,其中的元素可以是数组。对于所提供的数组,我们可以应用这个Alvar的答案。在文件内部打印时,您可能需要添加分隔符。
final_arr = [[[1,2,3,4],2],[[1,1,2,2],3],[[1,2,2],4]]
with open('out1.csv', 'w') as f:
for (i, j) in final_arr:
print(*i, j, file=f, sep=',')