Skip to main content
 首页 » 编程设计

python之如何在 python 中更改 glob 模块的内部排序系统

2025年05月04日14lyj

在对以'chr[0-9XY]'* 开头的目录的名称文件应用正则表达式后,我按以下顺序获得了一个列表:

['chr9', 'chr8', 'chr7', 'chr6', 'chr5', 'chr4', 'chr3', 'chr2', 'chr1', 'chr10', 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY']

我应用了 glob.glob 模块来遍历目录中的所需文件,并以这种方式排序。

我的问题是是否有可能使 glob 模块以不同的方式对文件进行排序,即按整数排序,最后按 X 和 Y 排序。像这样:

['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY']

有什么办法可以做到吗?提前致谢!

请您参考如下方法:

试试 lambda

sorted(var, key=lambda var: int(var[3:]) if var[3:].isdigit() else var[3:])