在数字前加零使其变为四位数
我有一些最多四位数的数字,比如 8
、12
或 197
。我想在这些数字前面加上0,直到它们变成四位数,比如 0008
、0012
或 0197
。在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'