从float中删除尾随零,同时与format()对齐

时间:2014-09-11 11:33:37

标签: python string-formatting

我试图将一个浮点数存储到有时包含尾随零的文件中。

当appliyng {:g}结果是预期时:删除尾随零。当我尝试在文本文件中对齐float时会出现问题,在这种情况下,我使用{:>10.0g},结果是用科学记数法写的浮点数,而不是仅删除它的尾随零。

这是一个MWE:

a = 546.0
b = 6785.35416

with open('format_test.dat', 'a') as f_out:
    f_out.write('{:g} {:>15.3f}'.format(a, b)) # <-- NO ZEROS BUT NOT ALIGNED
    f_out.write('\n')
    f_out.write('{:>10.0g} {:>15.3f}'.format(a, b)) # <-- ALIGNED BUT IN SC NOTATION

输出:

546        6785.354
     5e+02        6785.354

有没有办法从format()端解决这个问题,而不必在传递它之前篡改浮动?

1 个答案:

答案 0 :(得分:1)

g将自动切换为科学记数法,具体取决于值的大小(请参阅the docs)。您可以使用f为两个值获得所需内容:

>>> '{:>10.0f} {:>15.3f}'.format(546.0, 6785.354)
'       546        6785.354'