0

我正在阅读一系列.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)

我尝试了几种方法来对生成的列表进行排序,但它们似乎都没有改变顺序。

4

2 回答 2

1

正如 Mark Ransom 在这里发布的那样,答案对我有用:

Python 是否有用于字符串自然排序的内置函数?

于 2015-03-04T20:33:25.310 回答
0

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

文件名是否总是以相同的单词开头?“图像数据_”?

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

然后你可以list1.sort(key=int)如何对列表进行数字排序?

于 2015-03-04T20:30:20.807 回答