Python:csvwriter的问题

时间:2010-11-01 13:46:24

标签: python csv

我正在尝试将数据(主要是日期,布尔值和浮点数据类型)写入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 个答案:

答案 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

希望这可以帮到你