【问题标题】:How to pad a string with leading zeros in Python 3 [duplicate]如何在 Python 3 中用前导零填充字符串 [重复]
【发布时间】:2017-01-17 02:04:22
【问题描述】:

我正在尝试在 Python 3 中创建 length = 001,但每当我尝试将其打印出来时,它会截断没有前导零的值 (length = 1)。我将如何阻止这种情况发生而不必在打印出来之前将 length 转换为字符串?

【问题讨论】:

  • 这取决于您如何获得001length = 001length = 1' (number) and to get 001 相同,您应该使用一些字符串格式(请参阅答案)。但是length = '001'不一样,它是一个字符串,你可以通过int(length)获取数字。

标签: python python-3.x math rounding


【解决方案1】:

Python 整数没有固有的长度或有效位数。如果您希望它们以特定方式打印,则需要将它们转换为字符串。您可以通过多种方式指定填充字符和最小长度等内容。

要用零填充至少三个字符,请尝试:

length = 1
print(format(length, '03'))

【讨论】:

    【解决方案2】:

    利用zfill() 辅助方法左填充任何字符串、整数或浮点数;它对Python 2.xPython 3.x 都有效。

    需要注意的是,Python 2 是no longer supported

    示例用法:

    print(str(1).zfill(3))
    # Expected output: 001
    

    说明:

    当应用于一个值时,当初始 string 值的长度小于应用的 width 值的长度时,zfill() 返回一个左填充零的值, 否则,初始 string 值不变。

    语法:

    str(string).zfill(width)
    # Where string represents a string, an integer or a float, and
    # width, the desired length to left-pad.
    

    【讨论】:

    • 已经用python编码5年了,我从来没有遇到过这个函数。很棒的信息。
    【解决方案3】:

    从 python 3.6 开始,您可以使用 fstring :

    >>> length = 1
    >>> print(f'length = {length:03}')
    length = 001
    

    【讨论】:

      【解决方案4】:

      有很多方法可以实现这一点,但在我看来,Python 3.6+ 中最简单的方法是:

      print(f"{1:03}")
      

      【讨论】:

      • 能否请您解释一下这个语法,或者链接我可以阅读更多关于它的地方?
      • 我发现这是最简单的方法。 “3”部分表示总位数。所以 {1:03} 将显示 001。如果是 {123:03},则显示 123。如果是 {123:04},则显示 0123,依此类推...
      【解决方案5】:

      我建议使用这种丑陋的方法,但它确实有效:

      length = 1
      lenghtafterpadding = 3
      newlength = '0' * (lenghtafterpadding - len(str(length))) + str(length)
      

      我来这里是为了找到比这个更轻松的解决方案!

      【讨论】:

      • 试试这个:print(f"{1:03}")
      猜你喜欢
      • 2011-05-27
      • 2011-03-28
      • 2012-04-21
      • 1970-01-01
      • 2014-05-13
      • 2013-05-21
      • 2020-03-16
      • 2019-11-21
      • 2021-12-18
      相关资源
      最近更新 更多