为什么f“ {11:2d}”不能填充2个字符?

时间:2019-12-16 22:12:15

标签: python format-string f-string

我将Ipython 7.0.1Python 3.6.9一起使用

我想用数字格式的迷你语言右对齐数字。我以111为例来说明我要填充到2个字符的1位和2位数字。

对于零填充,一切正常,>是可选的,因为它是默认设置:

In [0]: print(f"{1:02d}\n{11:02d}\n{1:0>2d}\n{11:0>2d}")                                         
01
11
01
11

但是当我想用空格填充时,只要我将空格保留为默认值,它也可以工作:

In [1]: print(f"{1:2d}\n{11:2d}\n{1:>2d}\n{11:>2d}")                                             
 1
11
 1
11

但是,如果我明确输入空格,我会对结果感到惊讶:

In [2]: print(f"{1: 2d}\n{11: 2d}\n{1: >2d}\n{11: >2d}")                                         
 1
 11
 1
11

那是为什么?

1 个答案:

答案 0 :(得分:0)

全部在文档中...

  

format_spec :: = [[填充]对齐] [签名] ...

     

如果指定了有效的对齐值,则可以在其前面加上填充字符

由于fillsign都可以是space,因此将是模棱两可的,因此space作为fill的后面必须是{{1} }。

这是Python解释最后一行的方式:

align