如何在 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
转换为字符串?
【问题讨论】:
这取决于您如何获得001
。 length = 001
与 length = 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 中用前导零填充字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 中为指定的值范围填充前导零的字符串