Python: csvwriter的问题
我正在尝试把一些数据(主要是日期、布尔值和浮点数)写入一个CSV文件格式。以下是我代码的一部分:
# Write data to file
with open(OUTPUT_DIR + output_filename,'w') as outputfile:
wrtr = csv.writer(outputfile, delimiter=',', quotechar='"')
for x, y in datarows.items():
a,b,c,d,e,f,g = (somedate.strft('%Y-%m-%d'),0,6058.7,False,1913736200,0,False)
rowstr = "{0},{1},{2},{3},{4},{5},{6}".format(a,b,c,d,e,f,g)
wrtr.writerow(rowstr)
outputfile.close()
文件内容看起来像这样:
2,0,0,7,-,10,-,03,",",0,",",6,0,5,8,.,7,",",F,a,l,s,e,",",1,9,1,3,7,3,6,2,0,0,",",0,",",F,a,l,s,e
我现在是用原始文件对象来写入文件,但我更想用csvwrite,因为那是它应该用来做的事情。
2 个回答
5
试试用 wrtr.writerow([a,b,c,d,e,f,g])
这个方式。
writerow()
的参数必须是一个值的列表,而不是一行文本。csv.writer
的作用就是按照CSV的规则来格式化每一行的值。
你得到的结果是因为 writerow()
把你的 rowstr
字符串当成了一个字符列表来处理。
3
看看这个例子,也许能对你有帮助:
import datetime
with open('file.csv','w') as outputfile:
wrtr = csv.writer(outputfile, delimiter=',', quotechar='"')
a = (datetime.datetime.now().strftime('%Y-%m-%d'),0,6058.7,False,1913736200,0,False)
wrtr.writerow(a) # pass an iterable here
# outputfile.close() you don't have to call close() because you use with
file.csv
2010-11-01,0,6058.7,False,1913736200,0,False
希望这能帮到你