Python 中如何在字符串前面补零?
Python 字符串补零用 zfill() 方法:'123'.zfill(5) 得到 '00123'。也可用 f-string 格式化 f"{n:05d}"。本文对比各方法。
最简单:str.zfill(宽度)——'123'.zfill(5) 得到 '00123'。对数字也可以直接用 f-string:f"{42:05d}" 得到 '00042'。
方法一:zfill()(字符串方法)
s = '123'
padded = s.zfill(5)
print(padded) # 00123
在左侧补零直到达到指定长度。已经够长则不截断:
'123456'.zfill(3) # '123456'(不变)
方法二:f-string 格式化(数字推荐)
n = 42
print(f"{n:05d}") # 00042
print(f"{n:08d}") # 00000042
0 表示用零填充,5 是总宽度,d 表示整数。
方法三:str.rjust()
'123'.rjust(5, '0') # 00123
rjust 可以用任意字符填充,zfill 专门补零。两者效果相同,但 zfill 对负号处理更好:
'-123'.zfill(6) # '-00123'(负号在前,零补在中间)
'-123'.rjust(6, '0') # '00-123'(零补在最左边,语义不对)
常见问题(FAQ)
Q:数字补零后还是数字吗?
A:不是。补零后是字符串。如果需要数字比较,先补零再转回整数(但补零后转回整数会丢失前导零)。
Q:批量生成序号怎么用?
A:for i in range(1, 11): print(f"item_{i:03d}") 生成 item_001 到 item_010。
Q:右侧补零呢?
A:用 ljust:'123'.ljust(5, '0') 得到 '12300'。