【问题标题】:Writing list of tuples as a CSV file [duplicate]将元组列表写入 CSV 文件 [重复]
【发布时间】:2016-07-25 02:04:12
【问题描述】:

我在以我想要的方式编写 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(我希望 touple 的每个元素都在不同的列中)。 第二个问题是我在 nexts touples 之间有一个空行。

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

【问题讨论】:

  • 我得到了 touples 的列表,而不是列表的列表。
  • 我认为您可能正在使用错误的分隔符从 excel 读取您的 csv 文件。

标签: python csv


【解决方案1】:

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

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

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

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

看看有没有帮助。

【讨论】:

  • 就是这样!非常感谢。
【解决方案2】:

试试这个:

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

【讨论】:

  • 在将 'w' 改为 'wb' 后,空行消失了,但我仍然在第一列中得到了 touple 的所有元素
  • @K.Maj 嗯,我无法重现,我的文件是用制表符分隔的。如果你使用,作为分隔符,你会遇到同样的问题吗?不只是 excel 导入问题?
  • 那个 'writer = csv.writer(f, delimiter=';', lineterminator='\n')' 解决了我的问题。
  • @K.Maj 对,如果您实际上并不关心将制表符用作分隔符,则没有理由使用它。我建议自己用逗号,但是 ;我想也很好。我认为 csv 很好,但 Excel 导入不正确。
【解决方案3】:

您只需要在写入 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 中它看起来很正常(行和列,没有空格):

【讨论】:

  • 似乎无法解决 Excel 中的格式问题
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2023-03-17
  • 2018-12-15
相关资源
最近更新 更多