使用填充和对齐格式化float

时间:2014-12-16 22:24:01

标签: python python-2.7 string-formatting

我知道我能做到

> print '|{:16.3f}|\n|{:16.3f}|'.format(1, 10)
|           1.000|
|          10.000|

填充一个数字,以便输出是一定数量的列,我可以做

> print '|{:<16.3f}|\n|{:<16.3f}|'.format(1, 10)
|1.000           |
|10.000          |

左对齐格式化字段。有没有办法同时做两件事?我想在填充号码上留下左对齐,所以我的输出看起来像

> print '|{:<format>}|\n|{:<format>}|'.format(1, 10)
| 1.000          |
|10.000          |

其中<format>是我试图解决的问题。具体来说,我想要一个6字符格式的浮点数,其中3个小数位左对齐到16列。我知道我可以使用多种字符串格式来解决这个问题,但我希望能够同时完成所有这些工作。

1 个答案:

答案 0 :(得分:4)

将格式化的数字嵌入更宽的列:

>>> print '|{:16s}|\n|{:16s}|'.format(format(1, '6.3f'), format(10, '6.3f'))
| 1.000          |
|10.000          |

我使用format()函数调用来格式化数字。

虽然str.format()解析器可以处理格式化插槽中的填充参数,但您无法格式化格式输出。

当然,您可以在格式化字符串中添加空格,因为您已经控制了知道的格式的宽度在数字后面将有10个空格:

>>> print '|{:6.3f}          |\n|{:6.3f}          |'.format(1, 10)
| 1.000          |
|10.000          |