如何在Python 3中使用前导零填充字符串

Gab*_*and 47 python math rounding python-3.x

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

nye*_*eke 75

使用zfill()辅助方法左键填充任意字符串,整数或浮点数为零.

样品用法:

print str(1).zfill(3);
# Expected output: 001
Run Code Online (Sandbox Code Playgroud)

描述:

应用于某个值zfill()时,如果初始字符串值的长度小于应用的宽度值的长度,则返回一个左边用零填充的值,否则,返回初始字符串值.

句法:

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

  • 我已经用 python 编码 5 年了,但从未遇到过这个函数。很棒的信息。 (2认同)

PhE*_*PhE 34

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

>>> length = 1
>>> print(f'length = {length:03}')
length = 001
Run Code Online (Sandbox Code Playgroud)

  • 使用 print(f'length = {length:>03}')` 更安全(注意“>”),因为如果 length 是字符串,则此示例将失败,例如。`长度='1'` (7认同)

Ana*_*tol 21

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

print(f"{1:03}")
Run Code Online (Sandbox Code Playgroud)

  • 您能否解释一下这个语法,或者链接我可以阅读更多相关内容? (3认同)
  • @Cherona https://docs.python.org/3/library/string.html#format-examples (2认同)
  • 我发现这是最简单的方法。“3”部分表示总位数。所以 {1:03} 将显示 001。如果是 {123:03} 那么它将显示 123。如果是 {123:04} 那么它将显示 0123,等等... (2认同)

Blc*_*ght 9

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

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

length = 1
print(format(length, '03'))
Run Code Online (Sandbox Code Playgroud)