将元组列表作为CSV fi写入

2024-06-16 14:07:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用我想要的方式编写csv文件时遇到了问题。

说明:

我有三张单子:

list1=[1,2,3]

list2=['dd1','dd2','dd3']

list3=['vi1','vi2','vi3']

我想写我的csv文件如下:

      Column 1| Column 2| Column 3
Row 1        1|      dd1|      vi1
Row 2        2|      dd2|      vi2
Row 3        3|      dd3|      vi3

所以我使用zip方法如下:

csvd = zip(list1, list2, list3)

拉链拉好后我有:

csvd = [(1, 'dd1', 'vi1'), (2, 'dd2', 'vi2'), (3, 'dd3', 'vi3')]

接下来我使用csv writer,如下所示:

with open('path\\test.csv', 'w') as f:
     writer = csv.writer(f, delimiter='\t')
     writer.writerows(csvd)

这是我的输出: csv

首先,在第一列中有每个touple(我希望touple的每个元素都在不同的列中)。 第二个问题是nexts touples之间有空行。

我试着用writerowfor loop来解决我的问题,但这是我第二个问题的唯一解决方案,用这个方法我仍然得到了第一列中的所有问题。


Tags: 文件csvcolumnwriterrowlist2list1list3
3条回答

试试这个:

with open('path\\test.csv', 'wb') as f:

不确定空白行,但可能是因为行终止符。显式地将其设置为“\n”可能会有帮助。

关于Excel中的列问题:Excel默认使用“;”作为列分隔符。可以在Excel中更改,但也可以更改用于列分隔符的字符。

此writer调用将更改行终止符和列分隔符:

writer = csv.writer(f, delimiter=';', lineterminator='\n')

看看有没有帮助。

当您向CSV写入时,只需循环行和列:

with open('test.csv', 'w') as f:
     writer = csv.writer(f, delimiter='\t')
     for row in csvd:
         for i, column in enumerate(row):
             f.write(str(column))

             if i != len(row)-1:
                 f.write(',')
         f.write('\n')

上面将提供一个csv文件,其中包含:

1,dd1,vi1
2,dd2,vi2
3,dd3,vi3

编辑:

不敢相信我没有注意到,但是你的空白是因为你已经将写入程序设置为制表符分隔。只需将原始代码更改为:

with open('test.csv', 'wb') as f:
     writer = csv.writer(f, delimiter=',')
     writer.writerows(csvd)

对于原始代码,原始输出文件实际上如下所示:

1   dd1 vi1

2   dd2 vi2

3   dd3 vi3

当在excel中打开时,会看到您在图片中发布的方式

因此,通过将分隔符设置为,,原始文件将看起来像上面的原始输出。在excel中,它看起来很正常(行和列,没有空格):

enter image description here

相关问题 更多 >