Вот фиксированный код:
sorted_output = sorted(filelist,key=lambda x: sorting.index(re.split(r'_|\.',x)[3]))
Строка, введенная в re.split()
, должна быть передана как второй аргумент функции; Вы не вызываете re.split()
в строке. Первый аргумент - это само регулярное выражение, которое вы исправили.
Также: вам нужно экранировать .
с \
, потому что точка или точка - это специальный символ в регулярных выражениях, который соответствует все.
Вывод:
In [13]: sorted(filelist,key=lambda x: sorting.index(re.split(r'_|\.',x)[3]))
Out[13]:
['3006345_2234661_ENG_FRONT.jpg',
'3006345_2234661_ENG_BACK.jpg',
'3006345_2234661_ENG_LEFT.jpg',
'3006345_2234661_ENG_RIGHT.jpg',
'3006345_2234661_ENG_INGREDIENTS.jpg',
'3006345_2234661_ENG_INSTRUCTIONS.jpg',
'3006345_2234661_ENG_INFO.jpg',
'3006345_2234661_ENG_NUTRITION.jpg',
'3006345_2234661_ENG_PRODUCT.jpg']
Редактировать: как упоминается @Todd в комментариях, если вы хотите дополнительно убедиться, что строки отсортированы по нумерации c часть после происходит первая сортировка, затем используйте:
sorted(filelist,key=lambda x: [sorting.index(re.split(r'_|\.',x)[3]),x])