【问题标题】:Fixed width number formatting python 3固定宽度数字格式化python 3
【发布时间】:2024-05-22 21:15:01
【问题描述】:

如何使用 format 属性在 python 3.2 中获取整数以将 0 填充到固定宽度? 示例:

a = 1
print('{0:3}'.format(a))

给出我想要的“1”而不是“001”。在 python 2.x 中,我知道这可以使用

print "%03d" % number. 

我检查了 python 3 字符串文档,但没能得到它。

http://docs.python.org/release/3.2/library/string.html#format-specification-mini-language

谢谢。

【问题讨论】:

    标签: string formatting python-3.x string-formatting fixed-width


    【解决方案1】:

    在宽度前加上0:

    >>> '{0:03}'.format(1)
    '001'
    

    此外,在最新版本的 Python(不确定是哪个,但至少 2.7 和 3.1)中,您不需要位置标记:

    >>> '{:03}'.format(1)
    '001'
    

    【讨论】:

    • 这种方法如何适用于整列,例如我有 1 和 211,我希望输出 001 和 211。谢谢
    【解决方案2】:

    更好:

    number=12
    print(f'number is equal to {number:03d}')
    

    【讨论】:

      【解决方案3】:

      有内置的字符串方法.zfill用于填充0-s:

      >>> str(42).zfill(5)
      '00042'
      >>> str(42).zfill(2)
      '42'
      

      【讨论】:

      • 这在我需要二进制数的应用程序中运行良好:bin(42)[2:].zfill(7) 给出'0101010'。我不知道如何使其他答案起作用。