Задать вопрос
hottabxp
@hottabxp
Сначала мы жили бедно, а потом нас обокрали..

Как отсортировать список файлов?

Есть список файлов. Как можно его отсортировать по числе в имени? Сейчас так:
import glob

file_list = glob.glob('startandroid/test/*.html')

new_file_list = [x.split('/')[-1] for x in file_list]

for x in sorted(new_file_list):
	print(x)

На выходе у меня:
Урок 1. Введение..html
Урок 10. Оптимизируем реализацию обработчиков..html
Урок 100. Service. IntentService. Foreground. Автозагрузка сервиса.html
Урок 101. Создаем свой ContentProvider.html
Урок 102. Touch – обработка касания.html
Урок 103. MultiTouch – обработка множественных касаний.html
Урок 104. Android 3. Fragments. Lifecycle.html
Урок 105. Android 3. Fragments. Динамическая работа.html
Урок 106. Android 3. Fragments. Взаимодействие с Activity.html
Урок 107. Android 3. ActionBar. Размещение элементов.html
Урок 108. Android 3. ActionBar. Навигация - табы и выпадающий список.html
Урок 109. Android 3. Fragments. ListFragment - список.html
Урок 11. Папка res_values. Используем ресурсы приложения..html
Урок 110. Android 3. Fragments. DialogFragment - диалог.html
...

Мне же нужно сделать так, чтобы было: Урок 1..., Урок 2..., Урок 3... и т.д.

Может кто сталкивался с таким, или есть у вас сниппет для похожей задачи?

Практически все файловые менеджеры поддерживают такую сортировку, может и в Pyhon есть?
  • Вопрос задан
  • 152 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
@galaxy
На коленке можно и так:
sorted(new_file_list, key=lambda n: n.split()[1])

есть еще модуль
Ответ написан
hottabxp
@hottabxp Автор вопроса, куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Как подсказал galaxy, можно использовать key=lambda. Конкретно для моего случая(там после числа идет точка) можно использовать один из следующих способов:
sorted(new_file_list, key=lambda n: int(n.split()[1].replace('.','')))
sorted(new_file_list, key=lambda n: int(n.replace('.','',1).split()[1]))
sorted(new_file_list, key=lambda n: int(n.split()[1][:-1]))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы