我有一个浮点变量 obj["time"],它代表 unix 时间,之前我将结果写入文本文件,所以我可以使用
fd_out.write("%.6f\n" %(obj["time"]))
强制结果为小数点后 6 位。但现在我想将结果打印到 csv 文件中,所以我使用了:
writer.writerow((obj["time"]))
结果默认只有2位小数,我该如何更改?
使用中间格式应该可以解决您的问题,例如以下示例:
writer.writerow(("%.6f" % obj["time"], ))
当您直接写入文件时,您执行了格式化操作以将浮点变量转换为具有所需位数的字符串。您可以对 CSV 编写器执行完全相同的操作。
writer.writerow("%.6f" %(obj["time"]))
正如评论中指出的那样,您需要省略换行符,因为 CSV 编写器会为您添加它。
来自在 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)