如何在数字字符串的左边加上零,使字符串具有特定的长度?


当前回答

对于保存为整数的邮政编码:

>>> a = 6340
>>> b = 90210
>>> print '%05d' % a
06340
>>> print '%05d' % b
90210

其他回答

另一种方法是使用列表理解和长度检查条件。下面是一个演示:

# input list of strings that we want to prepend zeros
In [71]: list_of_str = ["101010", "10101010", "11110", "0000"]

# prepend zeros to make each string to length 8, if length of string is less than 8
In [83]: ["0"*(8-len(s)) + s if len(s) < desired_len else s for s in list_of_str]
Out[83]: ['00101010', '10101010', '00011110', '00000000']

要填充字符串:

>>> n = '4'
>>> print(n.zfill(3))
004

要填充数字:

>>> n = 4
>>> print(f'{n:03}') # Preferred method, python >= 3.6
004
>>> print('%03d' % n)
004
>>> print(format(n, '03')) # python >= 2.6
004
>>> print('{0:03d}'.format(n))  # python >= 2.6 + python 3
004
>>> print('{foo:03d}'.format(foo=n))  # python >= 2.6 + python 3
004
>>> print('{:03d}'.format(n))  # python >= 2.7 + python3
004

字符串格式文档。

str(n).zfill(width)将处理字符串、int、浮点。。。并且兼容Python 2.x和3.x:

>>> n = 3
>>> str(n).zfill(5)
'00003'
>>> n = '3'
>>> str(n).zfill(5)
'00003'
>>> n = '3.0'
>>> str(n).zfill(5)
'003.0'

对于那些来这里理解而不仅仅是快速回答的人来说。我特别针对时间字符串:

hour = 4
minute = 3
"{:0>2}:{:0>2}".format(hour,minute)
# prints 04:03

"{:0>3}:{:0>5}".format(hour,minute)
# prints '004:00003'

"{:0<3}:{:0<5}".format(hour,minute)
# prints '400:30000'

"{:$<3}:{:#<5}".format(hour,minute)
# prints '4$$:3####'

“0”符号替换为“2”填充字符,默认值为空白“>”符号表示字符串左侧的所有2“0”字符“:”符号format_spec

如果您希望填充一个整数,同时限制有效数字(使用f字符串):

a = 4.432
>> 4.432
a = f'{a:04.1f}'
>> '04.4'

f“{a:04.1f}”这转换为1个十进制/(浮点)点,将数字向左填充,直到总共4个字符。