С имеющимся у вас кодом достаточно сделать:
list.sort(key=lambda x: datet.search(x).group(1))
(но, пожалуйста, не используйте list
в качестве имени переменной).
Нетнеобходимо преобразовать извлеченную строку в datetime
, поскольку она уже находится в формате, который будет естественным образом сортироваться.
Обратите внимание, однако, что если какая-либо строка не соответствует регулярному выражению, это вызовет ошибку, поэтому вы можетеЛучше разделить ключ на именованную многострочную функцию и проверить успешное совпадение перед возвратом сопоставленной группы.
def sort_key(line):
match = datet.search(line)
if match:
return match.group(1)
return ''
data = [
'xxxx ResultDatetime:2017-05-31 09:38:00.000:ResultDatetime',
'xxxx ResultDatetime:2017-05-26 15:36:00.000:ResultDatetime',
'yyyyy ResultDatetime:2017-10-23 16:16:00.000:ResultDatetime'
]
data.sort(key=sort_key)