我正在阅读一系列 .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)
我尝试了一些方法来对这个产生的列表进行排序,但它们似乎都没有改变顺序。
答案 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?