如何在 Python 3 中用前导零填充字符串 [重复]

Posted

技术标签:

【中文标题】如何在 Python 3 中用前导零填充字符串 [重复]【英文标题】:How to pad a string with leading zeros in Python 3 [duplicate] 【发布时间】: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)获取数字。 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

利用zfill() 辅助方法左填充任何字符串、整数或浮点数;它对Python 2.x 和Python 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")

【讨论】:

能否请您解释一下这个语法,或者链接我可以阅读更多关于它的地方? @Cherona docs.python.org/3/library/string.html#format-examples 我发现这是最简单的方法。 “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")

以上是关于如何在 Python 3 中用前导零填充字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在JavaScript中用前导零填充数字[重复]

在 SQL Server 中为指定的值范围填充前导零的字符串

在 XSLT 1.0 中使用前导零填充数字

用前导零填充字符串,使其在 SQL Server 2008 中的长度为 3 个字符

如何用前导零填充数组?

用前导零填充字符字段