根据您的意见,您的文件将采用以下格式:>>> files = [".../data/tmp_1483228801-1485907200_10/raw_results.csv",
".../data/tmp_1483228800-1485907200_1/raw_results.csv",
".../data/tmp_1483228801-1485907201_30/raw_results.csv",
".../data/tmp_1483228801-1485907200_2/raw_results.csv",
".../data/tmp_1483228801-1485907201_9/raw_results.csv"]
然后就可以提取这些完整的原始文件路径中的所有数字,并将其转换为int。无需将路径拆分为目录路径段。在
^{pr2}$
这将从路径中提取所有数字并按其排序,将找到的第一个数字赋予最高优先级。如果其他的数字都一样,这不是问题,如果这些数字不同,它将首先按这些数字排序。在>>> sorted(files, key=lambda f: [int(n) for n in re.findall(r"\d+", f)])
['.../data/tmp_1483228800-1485907200_1/raw_results.csv',
'.../data/tmp_1483228801-1485907200_2/raw_results.csv',
'.../data/tmp_1483228801-1485907200_10/raw_results.csv',
'.../data/tmp_1483228801-1485907201_9/raw_results.csv',
'.../data/tmp_1483228801-1485907201_30/raw_results.csv']
如果这不是您想要的,您可以使用(稍微浪费)key=lambda f: [int(n) for n in re.findall(r"\d+", f)][-1]只按最后一个数字排序。在