Python 按位置对字符串列表排序

Python 按位置对字符串列表排序,python,list,sorting,Python,List,Sorting,我有一个具有以下模式的字符串列表 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_

我有一个具有以下模式的字符串列表

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()
无法直接工作

查看其他帖子,我发现解决方案是使用
参数和某种模式

我的问题是,如何在列表中每个字符串的特定位置开始排序。在我的情况下,我想在
\u 1SDV\u
之后的位置
35
开始排序

我看到了一些选择,比如

from operator import itemgetter

my_list.sort(key = itemgetter(35)) 


从注释中复制@schwobasegll的解决方案,下面的解决方案应该可以工作

my_list.sort(key = lambda x: x[35:])

例如:

使用正则表达式:

将regex作为re导入
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_20190523T03954_20190523T03109_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_20190604T03955_20190604T031020_027524_031B16_BD33_VV.tif”,
“/path/to/my/data/S1B_IW_GRDH_1SDV_20190622T03907_20190622T030932_016803_01F9F1_D6E9_VV.tif”,
“/path/to/my/data/S1B_IW_GRDH_1SDV_20190505T030904_20190505T030929_016103_01E4AD_17B5_VV.tif”]
my_list.sort(key=lambda x:re.findall(“\d{8}”,x)[0])
打印(我的列表)
输出:

['/path/to/my/data/S1B_IW_GRDH_1SDV_20190505T030904_20190505T030929_016103_01E4AD_17B5_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_20190523T03954_20190523T03109_027349_0315A8_999E_VV.tif”,
“/path/to/my/data/S1A_IW_GRDH_1SDV_20190604T03955_20190604T031020_027524_031B16_BD33_VV.tif”,
“/path/to/my/data/S1B_IW_GRDH_1SDV_20190610T030906_20190610T030931_016628_01F4BE_6B99_VV.tif”,
“/path/to/my/data/S1B_IW_GRDH_1SDV_20190622T03907_20190622T030932_016803_01F9F1_D6E9_VV.tif”,
“/path/to/my/data/S1A_IW_GRDH_1SDV_20190628T030956_20190628T031021_027874_032595_0B1F_VV.tif”]

你的意思是:
20190610T030906
?@DanielMesejo是的,但基本上我只对按你在那里看到的日期排序感兴趣-
20190610
使用切片:
my_list.sort(key=lambda x:x[35:])
@schwobasegll,只有
将我自己与目标lol分开。如果你将其作为答案添加,我将很乐意接受it@schwobaseggl同样有效:
my_list.sort(key=itemgetter(slice(35,None)))
my_list.sort(key = lambda x: x[35:])
>>> my_list = ['91', '82', '73', '64', '55', '46', '37', '28', '19']
>>> my_list.sort()
>>> my_list
['19', '28', '37', '46', '55', '64', '73', '82', '91']
>>> my_list.sort(key = lambda x: x[1:]) # sorting after first position
>>> my_list
['91', '82', '73', '64', '55', '46', '37', '28', '19']