Python:按规则排序列表中以fig开头的文件名
解决fig开头文件名的自定义排序问题
我之前也踩过这个坑——手里攒了240个以fig开头带编号的文件名,比如fig1-24-24-32、fig3-45-32-12这种,想把它们按fig1-xxx、fig2-xxx……的顺序排好,一开始试了print(glob.glob('fig*[1-241]*')),结果完全没达到预期,排序乱得一塌糊涂。
后来找到了个好用的解决方案,核心就是把文件名里的数字提取出来作为排序的依据,具体步骤很简单:
- 先把所有fig开头的文件捞出来:
import glob file_list = glob.glob('fig*')
- 写个小函数用来提取排序用的数字键:
def get_sort_key(file_name): # 从文件名里抠出fig后面的第一个数字 number = file_name.split('-')[0].replace('fig', '') return int(number)
- 用这个键给文件列表排序:
sorted_files = sorted(file_list, key=get_sort_key)
这么处理之后,列表就会严格按照我们想要的fig1、fig2……的顺序排列啦,亲测有效!
内容的提问来源于stack exchange,提问作者Pierre Jardinet
相关产品推荐
相关产品推荐

