在python中列出带有标题的csv [关闭]

Posted

技术标签:

【中文标题】在python中列出带有标题的csv [关闭]【英文标题】:List to csv in python with header [closed] 【发布时间】:2016-09-18 21:23:02 【问题描述】:

我已经编写了一个脚本,它提供如下列表作为输出。

['red', '361', '0']
['blue', '1', '0']
['orange', '77', '0']
['cream', '660', '73']
['ivory', '159', '0']

这个列表非常庞大,我想将输出内容写入顶部带有标题的 csv,如下所示。

color | total | fail

这是我试图实现它的方法

with open('colour.csv', 'wb') as csvfile:
    header = ['color', 'total', 'fail']
    writer = csv.writer(csvfile, delimiter=',')
    writer.writerow(header)
    for row in output:
        writer.writerow(output)

但是我得到的输出并不像预期的那样。生成 csv 并将列表的最后一行打印三次到 csv。我无法找到为什么不打印所有其他行或为什么最后一行打印三次? 这是我得到的示例输出:

color | total | fail
ivory | 159 | 0
ivory | 159 | 0
ivory | 159 | 0

这是我期望的输出:

color | total | fail
red | 361 | 0 
blue | 1 | 0
orange | 77 | 0
cream | 660 | 73
ivory | 159 | 0

谁能帮我解决这个问题?

【问题讨论】:

不应该是writer.writerow(row)吗? for row in output: writer.writerow(output) 看起来很奇怪,您目前还有 output 未定义。 output 来自哪里?这似乎很关键。它似乎只是最后一行而不是所有行。 @AlexHall output 正在将列表写入 csv。 你这么说,但我很确定它只是最后一行,即一维列表,而不是所有行,这将是一个二维列表。 【参考方案1】:

代码-

import csv

arr = [['red', '361', '0'],
      ['blue', '1', '0'],
      ['orange', '77', '0'],
      ['cream', '660', '73'],
      ['ivory', '159', '0']]

with open('output.csv','w') as f:
    writer = csv.writer(f)
    writer.writerow(['color', 'total', 'fail'])
    writer.writerows(arr)

【讨论】:

我之前尝试过这种方法,生成输出的方式与我想要的不同。列表中单词的字母会打印到 csv 的各个列,如下所示:r |e | d | 3|6|1 @csvb 你试过这个代码吗?你得到的结果是使用writer.writerow 而不是writer.writerows @csvb - 这个解决方案是正确的,尽管将 lineterminator='\n' 传递给 csv.writer() 以避免换行符可能是个好主意。如果你得到有趣的输出,就像你刚才提到的那样,你可能在你的 CSV 阅读器上使用了某种自定义设置。如果您正在寻找一些自定义格式,请尝试修改 delimiter 和 quotechar 参数,

以上是关于在python中列出带有标题的csv [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

提取 csv 文件特定列以在 Python 中列出

如何从 python 源代码中删除注释和文档字符串? [关闭]

如何使用 Python 中的 argparse 和 csv 库编写文件?

读取csv python时列出索引超出范围

网页抓取 - Python;写入 CSV

WooCommerce:从 CSV 文件中删除带有 id 列表的产品 [关闭]