【问题标题】:Writing CSV values to file results in values being separated in single characters (Python)将 CSV 值写入文件会导致值以单个字符分隔(Python)
【发布时间】:2011-06-04 22:37:41
【问题描述】:

对 Python 有点了解:

我有以下代码:

def printCSV(output, values, header):
 63     """
 64         prints the output data as comma-separated values
 65     """
 66 
 67     try:
 68         with open(output, 'w') as csvFile:
 69             #print headers
 70             csvFile.write(header)
 71 
 72             for value in values:
 73                 #print value, "\n"
 74                 csvFile.write(",".join(value))
 75                 csvFile.write("\n")
 76     except:
 77        print "Error occured while writing CSV file..."



Values is a list constructed somewhat like this:

values = []

for i in range(0,5):
    row = "A,%s,%s,%s" % (0,stringval, intval)
    values.append(row)

当我打开由上述函数创建的文件时,我希望看到如下内容:

Col1,Col2,Col3,Col4
A,0,'hello',123
A,0,'foobar',42

相反,我看到的是这样的数据:

Col1,Col2,Col3,Col4
A,0,'h','e','l','l','o',1,2,3
A,0,'f','o','o','b','a','r',4,2

有人知道这是什么原因吗?

我什至尝试直接使用fopen和fwrite(),仍然存在同样的问题。

这是什么原因造成的?

【问题讨论】:

  • 你为什么要csvFile.write(",".join(value))?请在您的问题中更全面地解释这行代码。
  • 啊,我想你已经指出了我的问题。此函数用于脚本的不同部分。看起来它通常会传递一个值列表。而当我调用它时,我传递给它一个逗号分隔值列表......有人可以投票支持它被关闭......
  • 如果您还不知道,Python 中有一个非常好的 csv 模块:只需执行import csv

标签: python


【解决方案1】:

您遇到的问题是您正在使用 ",".join(value)value 作为字符串。字符串的作用类似于字符的集合,因此该命令翻译为“用逗号连接每个字符。”

您可以改为使用元组而不是字符串作为您传递给printCSV 的行值,如下所示:

values = []

for i in range(0,5):
    row = ('A', 0, stringval, intval)
    values.append(row)

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 2017-09-07
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多