Python排序编号文件缺少前导零

时间:2015-03-04 20:20:46

标签: python sorting python-3.x file-io leading-zero

我正在阅读一系列 .csv 文件,其格式为:

ImageData_999.csv
ImageData_1000.csv

正如您所看到的那样,数字会按顺序增加,但它们没有前导零,因此当他们被读入时,我正在查看一个以这样结束的列表:

ImageData_3259
ImageData_3289
ImageData_811
ImageData_907

文件确实跳过了数字,所以如果这是最大的文件名,那么就不会有3289个文件,但我想对它们进行排序以便正确排序。这就是下面而不是上面的内容:

ImageData_811
ImageData_907
ImageData_3259
ImageData_3289

我正在使用python,目前只是从 os 模块中获取文件名,如下所示:

for root, dirs, files in os.walk(path):
    for file in fnmatch.filter(files, filter):
        yield os.path.join(root, file)

我尝试了一些方法来对这个产生的列表进行排序,但它们似乎都没有改变顺序。

2 个答案:

答案 0 :(得分:0)

所以你想用数字方式对它们进行排序而不是按字典顺序排序?

文件名是否始终以相同的单词开头? "的ImageData _"

如果是这样,我只会删除这些字母,然后将它们排序为数字。 (例如,他们每个人filename = re.sub(r'[^0-9]*', "", filename))。

然后你可以将它们从How to sort a list numerically?

中分类为list1.sort(key=int)这样的数字

答案 1 :(得分:0)

Mark Ransom在这里发布的答案对我有用:

Does Python have a built in function for string natural sort?