You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python为字符串中的整数子串补前导零?

Python实现为文件名中的整数补前导零

针对你给出的文件名列表,以下是两种实用的补前导零方案:

方案一:固定位数补零

如果希望统一将数字补到固定位数(比如2位),可以用正则表达式配合zfill()方法快速处理:

import re

def pad_fixed_length(filename, pad_len=2):
    # 匹配文件名中的所有整数子串,替换为补零后的格式
    return re.sub(r'(\d+)', lambda match: match.group(1).zfill(pad_len), filename)

# 处理单个文件示例
print(pad_fixed_length("image-9.png"))   # 输出: image-09.png
print(pad_fixed_length("image-10.png"))  # 输出: image-10.png

# 批量处理glob获取的文件列表
file_list = [
    "image-0.png", "image-1.png", "image-2.png",
    "image-3.png", "image-4.png", "image-5.png",
    "image-6.png", "image-7.png", "image-8.png",
    "image-9.png", "image-10.png", "image-11.png"
]
padded_list = [pad_fixed_length(f) for f in file_list]
for f in padded_list:
    print(f)

方案二:根据最大数字动态补位

如果想根据文件列表中最大数字的位数自动补零(比如列表最大数字是11,就补到2位;如果有image-100.png则补到3位),可以先提取所有数字计算最大位数,再批量处理:

import re
import glob

# 获取目标文件列表
file_list = glob.glob("image-*.png")

# 提取所有文件名中的数字,计算最大位数
all_numbers = []
for fname in file_list:
    num_match = re.search(r'(\d+)', fname)
    if num_match:
        all_numbers.append(int(num_match.group(1)))
max_digit_count = len(str(max(all_numbers))) if all_numbers else 2

# 批量补零
padded_files = [
    re.sub(r'(\d+)', lambda m: m.group(1).zfill(max_digit_count), fname)
    for fname in file_list
]

# 输出结果
for f in padded_files:
    print(f)

非Python场景补零思路

在Shell等非Python环境中,可通过正则替换工具实现,比如用sed命令补两位零:

sed -E 's/([0-9]+)/printf "%02d" \1/e' filename.txt

内容的提问来源于stack exchange,提问作者jtlz2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:50:03