我有一个脚本,其目的是对空间数据集文件进行排序和处理,这些文件不断被下载到服务器上。我的列表目前大致如下:
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对列表元素进行排序吗?
注意:我会选择按修改时间对这些文件进行排序,但它们通常会出现在数据目录中。
答案 0 :(得分:4)
您可以使用sorted
或sort
并提供lambda函数,以提取您想要的数字作为关键字。
sorted_list = sorted(list, key=lambda f: f[f.find('wrff'): f.find('wrff') + 6])