Python字符串零填充方法汇总

Python字符串零填充方法汇总

技术背景

在Python编程中,有时需要将字符串或数字用零填充到指定长度,比如处理日期、时间、编号等场景。本文将介绍多种实现字符串零填充的方法。

实现步骤

1. 使用zfill方法

zfill方法可用于字符串,它会在字符串左侧填充零,直到达到指定长度。如果字符串包含正负号,会将其移到填充后的字符串开头。

1
2
3
4
5
6
7
# 填充字符串
n = '4'
print(n.zfill(3)) # 输出: 004

# 填充数字
n = 4
print(str(n).zfill(3)) # 输出: 004

2. 使用rjust方法

rjust方法可以将字符串右对齐,并使用指定字符(这里是零)在左侧填充,直到达到指定长度。

1
2
s = 'test'
print(s.rjust(10, '0')) # 输出: 000000test

3. 使用字符串格式化

可以使用不同的字符串格式化方式来实现零填充。

旧的%格式化

1
2
n = 4
print('%03d' % n) # 输出: 004

format方法

1
2
3
4
n = 4
print('{:03d}'.format(n)) # 输出: 004
print('{0:03d}'.format(n)) # 输出: 004
print('{foo:03d}'.format(foo=n)) # 输出: 004

f-strings(Python 3.6+)

1
2
n = 4
print(f'{n:03}') # 输出: 004

4. 自定义函数

可以编写自定义函数来实现零填充功能。

1
2
3
4
5
def pad_left(n, width, pad="0"):
return ((pad * width) + str(n))[-width:]

n = 4
print(pad_left(n, 3)) # 输出: 004

核心代码

以下是各种方法的汇总代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# zfill方法
n_str = '4'
n_num = 4
print(n_str.zfill(3))
print(str(n_num).zfill(3))

# rjust方法
s = 'test'
print(s.rjust(10, '0'))

# 旧的%格式化
print('%03d' % n_num)

# format方法
print('{:03d}'.format(n_num))
print('{0:03d}'.format(n_num))
print('{foo:03d}'.format(foo=n_num))

# f-strings
print(f'{n_num:03}')

# 自定义函数
def pad_left(n, width, pad="0"):
return ((pad * width) + str(n))[-width:]

print(pad_left(n_num, 3))

最佳实践

  • Python 3.6及以上版本:推荐使用f-strings,因为它语法简洁,性能较好,并且能正确处理正负号。
1
2
n = -4
print(f'{n:03}') # 输出: -04
  • 通用性要求高:如果需要处理字符串、整数、浮点数等多种类型,且兼容Python 2.x和3.x,使用str(n).zfill(width)是一个不错的选择。

常见问题

1. 性能问题

不同方法的性能有所差异,一般来说,zfill方法性能较好。可以使用timeit模块进行性能测试:

1
2
3
4
5
6
7
8
9
import timeit

setup = '''
n = 4
'''

print(timeit.timeit('str(n).zfill(3)', setup=setup))
print(timeit.timeit('"{:03d}".format(n)', setup=setup))
print(timeit.timeit('f"{n:03}"', setup=setup))

2. 正负号处理

部分方法在处理正负号时表现不同。例如,使用f-strings处理整数时能正确处理正负号,而使用rjust方法处理包含正负号的字符串时,正负号会被当作普通字符处理。

1
2
3
n = -4
print(f'{n:03}') # 输出: -04
print(str(n).rjust(3, '0')) # 输出: -04,但不是预期的-04格式

Python字符串零填充方法汇总
https://119291.xyz/posts/2025-04-14.python-string-zero-padding-methods-summary/
作者
ww
发布于
2025年4月14日
许可协议