如何在python中使用csv编写器时设置准确性

时间:2012-07-09 16:39:30

标签: python csv

我有一个浮点变量,obj [“time”],表示unix时间,之前我将结果写入文本文件,所以我可以使用

  fd_out.write("%.6f\n" %(obj["time"])) 

强制结果有6位小数。但现在我想将结果打印到csv文件中,所以我使用了:

  writer.writerow((obj["time"]))

默认情况下,结果只有2位小数,我该怎么改呢?

3 个答案:

答案 0 :(得分:3)

使用中间格式可以解决您的问题,例如:

writer.writerow(("%.6f" % obj["time"], ))

答案 1 :(得分:1)

当您直接写入文件时,您执行了格式化操作以将float变量转换为具有所需位数的字符串。您可以为CSV编写器执行完全相同的操作。

writer.writerow("%.6f" %(obj["time"]))

正如评论中所指出的那样,您需要省略换行符,因为CSV编写器会为您添加该换行符。

答案 2 :(得分:1)

来自Specifying formatting for csv.writer in Python的早期回答:

class TypedWriter:
    """
    A CSV writer which will write rows to CSV file "f",
    which uses "fieldformats" to format fields.
    """

    def __init__(self, f, fieldnames, fieldformats, **kwds):
        self.writer = csv.DictWriter(f, fieldnames, **kwds)
        self.formats = fieldformats

    def writerow(self, row):
        self.writer.writerow(dict((k, self.formats[k] % v) 
                                  for k, v in row.iteritems()))

    def writerows(self, rows):
        for row in rows:
            self.writerow(row)