使用CSV作家时,我有一个浮动的变量,OBJ [“时间”],它代表了UNIX时间,以前我写的结果到一个文本文件中设定的精度,所以我可以使用如何在python
fd_out.write("%.6f\n" %(obj["time"]))
强制结果有6位小数。但现在我想打印结果为CSV文件,而不是,所以我用:
writer.writerow((obj["time"]))
结果只有2位小数在默认情况下,我怎么会改变呢?
使用CSV作家时,我有一个浮动的变量,OBJ [“时间”],它代表了UNIX时间,以前我写的结果到一个文本文件中设定的精度,所以我可以使用如何在python
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作家将添加为您服务。
这也插入一个换行 – 2012-07-09 18:09:40
@OttoAllmendinger,谢谢。很容易错过简单明显的事情。 – 2012-07-09 18:13:49
从早先的答案在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)
这是较早的回答: http://stackoverflow.com/questions/2982642/specifying-formatting-for-csv-writer-in-python – 2012-07-09 16:43:30
不应该是'writer.writerow((obj ['time'],))'#ie,一个元素元组? – 2012-07-09 16:44:50
你在哪里看到它只有两位小数?当我使用'csv.writer'时,我得到了输入中的所有数字。 – 2012-07-09 18:24:41