将逗号分隔值的字符串列表写入CSV

时间:2018-02-08 17:41:44

标签: python csv

我正在从平面文本文件中读取和解析行。我从该文件中获取某些值,执行一些次格式化/转换步骤,并吐出逗号分隔的字符串。到目前为止,我一直在将这些字符串直接写入新的csv文件中。但是,现在我试图利用csv库来更有效地处理它。

import csv

mydata = ["This, is, a, test, row", 
"This is, another test, row, my, dude",
"100, 200, 300, 400, 500"]

with open('test.csv', 'w') as target:
  writer = csv.writer(target, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
  writer.writerow(mydata)

结果如下:

"This, is, a, test, row","This is, another test, row, my, dude","100, 200, 300, 400, 500"

不是我真正想要的。而writer.writerows(mydata)导致此:

T,h,i,s,",", ,i,s,",", ,a,",", ,t,e,s,t,",", ,r,o,w
T,h,i,s, ,i,s,",", ,a,n,o,t,h,e,r, ,t,e,s,t,",", ,r,o,w,",", ,m,y,",", ,d,u,d,e
1,0,0,",", ,2,0,0,",", ,3,0,0,",", ,4,0,0,",", ,5,0,0

根据我的判断,csv.writer()要么遍历字符串列表(第一个示例),要么迭代字符串(第二个示例)。我还尝试使用for循环迭代mydata中的每个项目,但这并没有帮助。对于我的生活,我无法找出使用编写器解析此数据的最佳方法,以便列表中的每个项目对应于目标csv文件中的一行。将mydata数据存储在完全不同的数据结构中是否有意义?处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

使我的数据成为二维列表,用户writer.writerows()

.bashrc

writerow()最适合用于编写单行,例如header:

import csv

mydata = [['This', 'is', 'a', 'test', 'row'], 
['This', 'is', 'another', 'test', 'row', 'my', 'dude'],
['100', '200', '300', '400', '500']]

with open('test.csv', 'w') as target:
  writer = csv.writer(target)
  writer.writerows(mydata)

答案 1 :(得分:2)

您需要将import csv myheaders = ['Header1', 'Header2', 'Header3', 'Header4', 'Header5'] mydata = [['This', 'is', 'a', 'test', 'row'], ['This', 'is', 'another', 'test', 'row', 'my', 'dude'], ['100', '200', '300', '400', '500']] with open('test.csv', 'w') as target: writer = csv.writer(target) writer.writerow(myheaders) writer.writerows(mydata) 与列表列表一起使用,如下所示:

writerows

您当前的代码将每个字符串视为列列表,因此意外输出。