将元组列表编写为CSV文件

时间:2016-04-05 08:35:57

标签: python csv

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

说明

我有3个名单:

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编写器:

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

这是我的输出: csv

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

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

3 个答案:

答案 0 :(得分:5)

不确定空白行,但可能是因为行终止符。明确将其设置为' \ n'可以帮忙。

关于Excel中的列问题:Excel使用&#39 ;;'默认为列分隔符。这可以在Excel中更改,但您也可以更改要用于列分隔符的字符。

此编写器调用将更改行终止符和列分隔符:

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

看看是否有帮助。

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

当您写到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

编辑:

无法相信我没有注意到这一点,但是你的whitespacing是因为你已经将作者设置为制表符分隔符。只需将原始代码更改为:

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