将CSV值写入文件会导致值以单个字符分隔(Python)

时间:2011-01-06 21:34:26

标签: python

有点知道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(),但仍然存在同样的问题。

造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:3)

您遇到的问题是您正在",".join(value)value是一个字符串。字符串就像一个字符集合,因此命令转换为“用逗号加入每个字符。”

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

values = []

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