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

Writing CSV values to file results in values being separated in single characters (Python)

对Python有点了解:

我有以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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,"
"
 74                 csvFile.write("
,".join(value))
 75                 csvFile.write("

")
 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)

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

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

相反,我看到的数据如下:

1
2
3
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(),但仍然存在相同的问题。

是什么造成的?


你遇到的问题是你在用value作为字符串来做",".join(value)。字符串的作用类似于一组字符,因此该命令转换为"用逗号连接每个字符"。

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

1
2
3
4
5
values = []

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