2

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

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

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

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

结果默认只有2位小数,我该如何更改?

4

3 回答 3

3

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

writer.writerow(("%.6f" % obj["time"], ))
于 2012-07-09T16:41:30.610 回答
1

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

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

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

于 2012-07-09T16:43:43.077 回答
1

来自在 Python 中为 csv.writer 指定格式的较早答案:

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)
于 2012-07-09T16:44:51.313 回答