我有一个浮点变量,obj [“time”],表示unix时间,之前我将结果写入文本文件,所以我可以使用
fd_out.write("%.6f\n" %(obj["time"]))
强制结果有6位小数。但现在我想将结果打印到csv文件中,所以我使用了:
writer.writerow((obj["time"]))
默认情况下,结果只有2位小数,我该怎么改呢?
答案 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)