我正在尝试将数据(主要是日期,布尔值和浮点数据类型)写入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 - 因为它应该用于
答案 0 :(得分:5)
请尝试wrtr.writerow([a,b,c,d,e,f,g])
。
writerow()
参数必须是值列表,而不是文本行。 csv.writer
的想法是它将根据CSV规则格式化行值。
您的结果是由于writerow()
将您的rowstr
字符串解释为字符列表。
答案 1 :(得分: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
希望这可以帮到你