как сортировать файлы по возрастанию в скобках - PullRequest
0 голосов
/ 31 января 2020

Я здесь новичок и надеюсь, что вы поможете мне с моей проблемой.

У меня есть список в python с такими именами:

List = ['file_io(0).txt','file_io(1).txt',....,'file_io(13004).txt']

, и я бы хотел Сортируйте эти файлы по возрастанию в скобках.

Если я использую sort(List), файлы сортируются следующим образом:

List = ['file_io(0).txt','file_io(1).txt','file_io(10).txt','file_io(100).txt',...]

У кого-нибудь есть совет или решение для меня?

Спасибо.

Ответы [ 2 ]

1 голос
/ 31 января 2020

Вы можете использовать регулярное выражение, чтобы вытащить число из скобок, преобразовать его в int, а затем отсортировать по значению этого числа c.

>>> List = ['file_io(0).txt', 'file_io(1).txt', 'file_io(97).txt', 'file_io(100).txt', 'file_io(13004).txt']
>>> sorted(List, key=lambda i: int(re.match(r'file_io\((\d+)\).txt', i).group(1)))
['file_io(0).txt', 'file_io(1).txt', 'file_io(97).txt', 'file_io(100).txt', 'file_io(13004).txt']
0 голосов
/ 31 января 2020

Предполагая, что вы уверены в структуре именования файлов, используйте этот ключ сортировки для сортировки списка.

lst.sort(key=lambda x:int(x[x.find("(")+1:x.find(")")]))
...