我正在使用csv.DictWriter从一组词典输出csv文件。我使用以下函数:def dictlist2file(dictrows, filename, fieldnames, delimiter=’\t’,
lineterminator=’\n’):
out_f = open(filename, ‘w’)
# Write out header
header = delimiter.join(fieldnames) + lineterminator
out_f.write(header)
# Write out dictionary
data = csv.DictWriter(out_f, fieldnames,
delimiter=delimiter,
lineterminator=lineterminator)
data.writerows(dictrows)
out_f.close()
其中dictrows是字典的列表,fieldnames提供应该序列化到文件的头。在
我的字典列表(dictrows)中的一些值是数字的——例如float,我想指定这些值的格式。例如,我可能希望使用“%.2f”而不是完全精度来序列化浮点。理想情况下,我想指定某种映射来说明如何格式化每种类型,例如
^{pr2}$
也就是说,如果你看到一个浮点数,用%.2f格式化它。有没有一种简单的方法可以做到这一点?我不想给DictWriter或任何类似的复杂的子类——这看起来是非常通用的功能。在
如何做到这一点?在
我能想到的另一个解决方案是:不要搞乱DictWriter的格式,只需使用decimal包将float的十进制精度指定为%.2,这将导致序列化。不知道这是不是更好的解决办法?在
非常感谢你的帮助。在