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

Python实现按前缀将文件名数组拆分为多个子数组

Python实现按文件名前缀分组的简洁方案

这需求在批量处理文件时太常见了,我给你分享几个实用又简洁的Python实现方案,覆盖不同场景:

方法一:用itertools.groupby(最简洁,适合有序数组)

如果你的文件名数组已经是按前缀连续排列的,直接用itertools.groupby就能一步搞定:

from itertools import groupby

files = ['001_1.png', '001_2.png', '001_3.png', '002_1.png','002_2.png', '003_1.png', '003_2.png', '003_3.png', '003_4.png']

# 按下划线分割提取前缀作为分组依据
grouped_files = [list(group) for _, group in groupby(files, key=lambda f: f.split('_')[0])]

print(grouped_files)

注意点:

  • groupby只会对连续的相同键分组,如果你的数组里前缀是乱序的(比如穿插着001和002的文件),记得先给数组排序:files.sort(),这样同一前缀的文件会集中在一起,分组结果才正确。
  • 如果前缀是固定长度的(比如都是3位数字),可以用切片代替split,效率更高:key=lambda f: f[:3]

方法二:用字典分组(无需排序,适用性更广)

如果不想依赖数组的顺序,用字典来分组是更稳妥的选择,不管原数组怎么排列都能正确分组:

files = ['001_1.png', '001_2.png', '001_3.png', '002_1.png','002_2.png', '003_1.png', '003_2.png', '003_3.png', '003_4.png']

group_dict = {}
for file in files:
    prefix = file.split('_')[0]
    # 前缀不存在时自动创建空列表,然后追加文件
    group_dict.setdefault(prefix, []).append(file)

# 把字典的值转换成嵌套数组就是最终结果
grouped_files = list(group_dict.values())

print(grouped_files)

这个方法的好处是不需要提前排序,分组后的顺序是前缀第一次出现的顺序,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:58:28