不同字符数文件名排序列表



我遇到了一个问题,我需要一个排序的文件列表,格式为xxx_00000, xxx_00001。问题是,当有超过100000个文件时,格式变为xxx_100000,而所有其他格式保持不变。这意味着当我执行os.listdir(目录)时,我得到xxx_100000旁边的xxx_10000(即xxx_10000是索引10,000,xxx_100000是索引10,001)。有什么想法,如何排序,使他们出现在正确的顺序?我试过:

sorted(paths)
sorted(paths, key=lambda x: x[x.rfind('_')+1:-4])

def sorted_helper(x):
x = str(00000) + x[x.rfind('_')+1:-4]
return x[-7:]
sorted(paths, key=sorted_helper)

您可能希望将其作为整型而不是字符串进行排序。试一试:

sorted(paths, key=lambda filename: int(filename.split("_")[1]))

您可以使用natsort.natsorted:

from natsort import natsorted
natsorted(paths)

natsort库可以在这种情况下提供帮助。

例如:

from natsort import natsorted
natsorted(paths)

输出:

['xxx_00001',
'xxx_00002',
'xxx_00100',
'xxx_01000',
'xxx_10000',
'xxx_100001',
'xxx_100010',
'xxx_110000']

相关内容

  • 没有找到相关文章

最新更新