Display number with leading zeros

Display number with leading zeros

技术背景

在Python编程中,有时需要将数字显示为带有前导零的字符串,例如在时间、编号等场景中。不同版本的Python提供了多种方式来实现这一需求。

实现步骤

Python 2 及 Python 3 通用方法

使用%格式化字符串,类似printfsprintf

1
2
number = 1
print("%02d" % (number,))

Python 3.+

使用format方法:

1
2
number = 1
print("{:02d}".format(number))

Python 3.6+

使用 f-strings:

1
2
number = 1
print(f"{number:02d}")

使用str.zfill方法

1
2
3
print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))

使用rjust方法

1
2
3
a = [1, 10, 100]
for num in a:
print(str(num).rjust(2, '0'))

使用format字符串

1
2
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))

手动拼接

1
2
3
4
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print(formatted)

核心代码

以下是几种常见方法的核心代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# % 格式化
number = 1
print("%02d" % (number,))

# format 方法
print("{:02d}".format(number))

# f-strings
print(f"{number:02d}")

# str.zfill
print(str(1).zfill(2))

# rjust
print(str(1).rjust(2, '0'))

最佳实践

在 Python 3.6 及以上版本中,建议使用 f-strings,因为它语法简洁、性能较好:

1
2
number = 1
print(f"{number:02d}")

常见问题

性能问题

不同方法的性能有所差异,可以使用timeit模块进行测试:

1
2
3
4
import timeit

print(timeit.timeit("'{:02d}'.format(1)", number=1000000))
print(timeit.timeit("f'{1:02d}'", number=1000000))

版本兼容性

如果代码需要在 Python 2 和 Python 3 中都能运行,建议使用%格式化或format方法。