【发布时间】:2018-02-08 17:41:43
【问题描述】:
我正在读取和解析平面文本文件中的行。我从该文件中获取某些值,执行一些小的格式化/转换步骤,然后输出一个逗号分隔的字符串。到目前为止,我只是将这些字符串直接写入一个新的 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 数据存储在完全不同的数据结构中是否有意义?处理这个问题的最佳方法是什么?
【问题讨论】:
-
您在寻找什么?每个字符用逗号分隔?
-
writerows()方法需要一个可迭代的作为输入。字符串是可迭代的,但猜猜它们迭代的是什么。这解释了您的第二个输出。