在数字前加零使其变为四位数

8 投票
1 回答
30133 浏览
提问于 2025-04-18 09:11

我有一些最多四位数的数字,比如 812197。我想在这些数字前面加上0,直到它们变成四位数,比如 000800120197。在Python中,有什么简单的方法可以做到这一点?最“Pythonic”的方式是什么呢?

我可以用一系列的if语句来实现,像这样:

if len(number) == 1:
    number = '000' + number
...

但我觉得还有更优雅的方法。

1 个回答

34

有几种很“Python”的方法可以做到这一点,我特别喜欢从Python 3.6开始的新f-strings:

>>> f'{5:04}'
'0005'

这个用的是字符串格式化的小语言:

>>> five = 5
>>> f'{five:04}'
'0005'

第一个零表示填充的字符,4表示宽度:

>>> minimum_width = 4
>>> filler = "0" # could also be just 0
>>> f'{five:{filler}{minimum_width}}'
'0005'

接下来是使用内置的format函数:

>>> format(5, "04")
'0005'
>>> format(55, "04") 
'0055'
>>> format(355, "04")
'0355'

还有,使用字符串的格式方法和小语言:

>>> '{0:04}'.format(5)
'0005'

这里,:后面的说明也是一样的,0表示用零填充,4表示宽度为四。

最后,str.zfill方法是专门为这个设计的,可能是最快的做法:

>>> str(5).zfill(4)
'0005'

撰写回答