按每个元素

时间:2017-09-11 22:33:56

标签: python sorting

我有一个脚本,其目的是对空间数据集文件进行排序和处理,这些文件不断被下载到服务器上。我的列表目前大致如下:

list = ['file.t00Z.wrff02.grib2', 'file.t00Z.wrff03.grib2', 'file.t00Z.wrff00.grib2', 'file.t00Z.wrff05.grib2', 'file.t00Z.wrff04.grib2', 'file.t00Z.wrff01.grib2', 'file.t06Z.wrff01.grib2', 'file.t06Z.wrff00.grib2', 'file.t06Z.wrff02.grib2', ...]

如您所见,每个文件都有特定的命名约定。

稍后在脚本中,此列表中的文件将按顺序处理,但我需要按照" wrff"之后的两位数字指定的时间顺序处理它们。在每个文件名中(00,01,02 ......)。

我目前有一个正则表达式,可以删除列表中与" file.t"之后的两个数字不匹配的所有文件,如有必要。但是有一种简单的方法可以通过substring对列表元素进行排序吗?

注意:我会选择按修改时间对这些文件进行排序,但它们通常会出现在数据目录中。

1 个答案:

答案 0 :(得分:4)

您可以使用sortedsort并提供lambda函数,以提取您想要的数字作为关键字。

sorted_list = sorted(list, key=lambda f: f[f.find('wrff'): f.find('wrff') + 6])