Python 使用填充和对齐设置浮点格式
我知道我能行Python 使用填充和对齐设置浮点格式,python,python-2.7,string-formatting,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 '|{: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 |
我要解决的问题在哪里。具体来说,我想要一个6个字符格式的浮点数,小数点后3位左对齐为16列。我知道我可以用多种字符串格式来解决这个问题,但我想同时解决所有问题。您必须将格式化的数字嵌入到更宽的列中:
>>> print '|{:16s}|\n|{:16s}|'.format(format(1, '6.3f'), format(10, '6.3f'))
| 1.000 |
|10.000 |
我使用格式化函数调用来格式化数字
尽管str.format解析器可以处理从格式化槽填充参数,但不能格式化格式化输出
当然,您可以只在格式字符串中添加空格,因为您已经控制了格式的宽度,您知道数字后面将有10个空格:
>>> print '|{:6.3f} |\n|{:6.3f} |'.format(1, 10)
| 1.000 |
|10.000 |
不幸的是,在处理完所有输入之前,无法知道要在右侧填充多少空格。正如我在问题中提到的,我希望避免使用多种格式。这可能是我唯一的路线,但目前这并不能回答我的问题。如果您能提供证明这是解决此问题的唯一方法的参考资料,那么我将接受您的回答。@bheklillr您如何提供某个不存在的参考资料?我想这个答案已经很接近了。@bheklillr:虽然可以使用格式来提供参数,但不能格式化输出。@markransem您可以提供对一个规范的引用,该规范列出了什么是可能的,或者提供了一个说明为什么什么是不可能的。很容易找到“{:f”不是有效的格式说明符的文档,但是我找不到任何东西来说明为什么{:@bheklir:如果文档中没有,那么它是不允许的。