我有一个字符串列表,其模式如下
my_list = ['/path/to/my/data/S1B_IW_GRDH_1SDV_20190610T030906_20190610T030931_016628_01F4BE_6B99_VV.tif',
'/path/to/my/data/S1A_IW_GRDH_1SDV_20190523T030954_20190523T031019_027349_0315A8_999E_VV.tif',
'/path/to/my/data/S1A_IW_GRDH_1SDV_20190511T030953_20190511T031018_027174_03102E_402F_VV.tif',
'/path/to/my/data/S1A_IW_GRDH_1SDV_20190628T030956_20190628T031021_027874_032595_0B1F_VV.tif',
'/path/to/my/data/S1A_IW_GRDH_1SDV_20190604T030955_20190604T031020_027524_031B16_BD33_VV.tif',
'/path/to/my/data/S1B_IW_GRDH_1SDV_20190622T030907_20190622T030932_016803_01F9F1_D6E9_VV.tif',
'/path/to/my/data/S1B_IW_GRDH_1SDV_20190505T030904_20190505T030929_016103_01E4AD_17B5_VV.tif']
我想按照每个字符串中的时间信息(
20190610,.....
)按时间顺序对列表进行排序。问题在于,每个字符串开头都有模式S1A
或S1B
,这使得使用简单的mylist.sort()
不能直接起作用。通过查看其他帖子,我发现解决方案是使用
key
参数和某种模式。我的问题是,如何从列表中每个字符串的特定位置开始排序。在我的情况下,我想从位置
35
开始排序,紧跟在_1SDV_
之后。我已经看到了一些选项,比如
from operator import itemgetter
my_list.sort(key = itemgetter(35))
或者
my_list.sort(key = lambda x: x[35])
20190610T030906
? - Dani Mesejo20190610
。 - GCGMmy_list.sort(key=lambda x: x[35:])
- user2390182:
将我与目标分开了,哈哈。如果您将其作为答案添加,我将很高兴接受它。 - GCGMmy_list.sort(key=itemgetter(slice(35, None)))
。 - wjandrea