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

Python实现首字符为数字的文件名自然排序的方法

按文件名中的数字实现自然排序

直接调用mylist.sort()时,列表会按字符串字典序排序,导致数字排序不符合预期。要实现按文件名中的数字大小排序,可通过自定义sort()方法的key参数来实现,以下是两种实用方案:

方案1:正则匹配提取数字(通用场景)

如果数字在文件名中的位置不固定(不一定在开头),用正则表达式匹配出文件名中的数字部分,转成整数作为排序依据:

import re

mylist = ['0_sound.wav', '10_sound.wav', '15_sound.wav', '20_sound.wav', '5_sound.wav']
# 匹配文件名中的连续数字,取第一个匹配结果转整数
mylist.sort(key=lambda x: int(re.search(r'\d+', x).group()))
print(mylist)
# 输出:['0_sound.wav', '5_sound.wav', '10_sound.wav', '15_sound.wav', '20_sound.wav']

若数字仅出现在文件名开头,可将正则改为r'^\d+',匹配效率更高。

方案2:字符串分割提取数字(格式固定场景)

如果文件名格式固定(数字和其他内容以下划线分隔,且数字是第一个部分),可以直接分割字符串提取数字:

mylist = ['0_sound.wav', '10_sound.wav', '15_sound.wav', '20_sound.wav', '5_sound.wav']
# 按下划线分割,取第一个元素转整数
mylist.sort(key=lambda x: int(x.split('_')[0]))
print(mylist)
# 输出:['0_sound.wav', '5_sound.wav', '10_sound.wav', '15_sound.wav', '20_sound.wav']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:48:16