【发布时间】:2017-09-11 22:33:56
【问题描述】:
我有一个脚本,其目的是对不断下载到服务器上的空间数据集文件进行排序和处理。我的列表目前大致如下:
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”后面的两位数字不匹配的所有文件。但是有没有一种简单的方法可以通过子字符串对列表元素进行排序?
注意:我会选择简单地按修改时间对这些文件进行排序,但它们在数据目录中经常出现乱序。
【问题讨论】:
-
这不是上述问题的重复,因为所需的顺序并不总是自然的字典顺序。
-
@cᴏʟᴅsᴘᴇᴇᴅ 这不是重复的,因为
Sorting dictionary with alphanumeric keys in natural order [duplicate]涉及字典中的项目,Does Python have a built in function for string natural sort?不回答 OP 的问题,因为它不涉及字典顺序。最后,这两个“重复”的答案都超出了本文的范围。 -
@dugup 假设此类问题以前没有被问过是不合理的。与其投票重新打开,请找到适当的副本(如果原始副本标记不正确)。
-
@Ajax1234 我认为新的副本应该足以解决 OP 的问题。他们需要做的就是修改 lambda。
-
@Ajax1234 我看不出副本中的答案与此处的答案有何不同。仅仅因为问题不同,并不意味着它们不必具有相同/相似的解决方案,并且可以这样标记。