Отсортировать файлы по возрастанию даты в имени
Имеется список файлов, в названии которых присутствует дата
a = ['03.04.2023.XML',
'17.04.2023.XML',
'27.03.2023.XML',
'10.04.2023.XML',
'18.04.2023.XML',
'21.04.2023.XML',
'14.04.2023.XML',
'25.04.2023.XML',
'13.04.2023.XML',
'29.03.2023.XML',
'28.03.2023.XML',
'07.04.2023.xml',
'19.04.2023.XML',
'30.03.2023.XML',
'05.04.2023.XML',
'26.04.2023.XML',
'06.04.2023.XML',
'30.03.2023.XML',
'07.04.2023.XML',
'27.03.2023.XML',
'28.03.2023.XML',
'10.04.2023.XML',
'29.03.2023.XML',
'14.04.2023.XML',
'24.04.2023.XML',
'13.04.2023.XML',
'11.04.2023.xml',
'17.04.2023.XML',
'19.04.2023.XML',
'12.04.2023.XML',
'20.04.2023.XML']
Как отсортировать их в правильном порядке, чтобы мартовские файлы были первые, а потом шли уже апрельские. Нужно универсальное решение, те хардкодинг именно под апрель и март не подойдет
Обычной сортировкой не удается получить нужный результат
d = sorted(a)
>>>
['03.04.2023.XML',
'05.04.2023.XML',
'06.04.2023.XML',
'07.04.2023.XML',
'07.04.2023.xml',
'10.04.2023.XML',
'10.04.2023.XML',
'11.04.2023.xml',
'12.04.2023.XML',
'13.04.2023.XML',
'13.04.2023.XML',
'14.04.2023.XML',
'14.04.2023.XML',
'17.04.2023.XML',
'17.04.2023.XML',
'18.04.2023.XML',
'19.04.2023.XML',
'19.04.2023.XML',
'20.04.2023.XML',
'21.04.2023.XML',
'24.04.2023.XML',
'25.04.2023.XML',
'26.04.2023.XML',
'27.03.2023.XML',
'27.03.2023.XML',
'28.03.2023.XML',
'28.03.2023.XML',
'29.03.2023.XML',
'29.03.2023.XML',
'30.03.2023.XML',
'30.03.2023.XML']
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Например, обрезать расширение, преобразовать в дату и сортировать уже как даты, а не как строки:
from datetime import datetime
b = sorted(a, key=lambda item: datetime.strptime(item.rpartition(".")[0], "%d.%m.%Y"))
from pprint import pprint
pprint(b)
Вывод:
['27.03.2023.XML',
'27.03.2023.XML',
'28.03.2023.XML',
'28.03.2023.XML',
'29.03.2023.XML',
'29.03.2023.XML',
'30.03.2023.XML',
'30.03.2023.XML',
'03.04.2023.XML',
'05.04.2023.XML',
'06.04.2023.XML',
'07.04.2023.xml',
'07.04.2023.XML',
'10.04.2023.XML',
'10.04.2023.XML',
'11.04.2023.xml',
'12.04.2023.XML',
'13.04.2023.XML',
'13.04.2023.XML',
'14.04.2023.XML',
'14.04.2023.XML',
'17.04.2023.XML',
'17.04.2023.XML',
'18.04.2023.XML',
'19.04.2023.XML',
'19.04.2023.XML',
'20.04.2023.XML',
'21.04.2023.XML',
'24.04.2023.XML',
'25.04.2023.XML',
'26.04.2023.XML']