Изменить порядок файлов
In[]
all_files
out[]
[1multibias_spar_-1.000_0.000.s2p',
1multibias_spar_-1.000_10.000.s2p',
1multibias_spar_-1.000_2.000.s2p',
1multibias_spar_-1.000_4.000.s2p',
1multibias_spar_-1.000_6.000.s2p',
1multibias_spar_-1.000_8.000.s2p',
1multibias_spar_-2.000_0.000.s2p',
1multibias_spar_-2.000_10.000.s2p',
1multibias_spar_-2.000_2.000.s2p',
1multibias_spar_-2.000_4.000.s2p',
1multibias_spar_-2.000_6.000.s2p',
1multibias_spar_-2.000_8.000.s2p',
1multibias_spar_-3.000_0.000.s2p',
1multibias_spar_-3.000_10.000.s2p',
1multibias_spar_-3.000_2.000.s2p',
1multibias_spar_-3.000_4.000.s2p',
1multibias_spar_-3.000_6.000.s2p',
1multibias_spar_-3.000_8.000.s2p',
1multibias_spar_-4.000_0.000.s2p',
1multibias_spar_-4.000_10.000.s2p',
1multibias_spar_-4.000_2.000.s2p',
1multibias_spar_-4.000_4.000.s2p',
1multibias_spar_-4.000_6.000.s2p',
1multibias_spar_-4.000_8.000.s2p',
1multibias_spar_-5.000_0.000.s2p',
1multibias_spar_-5.000_10.000.s2p',
1multibias_spar_-5.000_2.000.s2p',
1multibias_spar_-5.000_4.000.s2p',
1multibias_spar_-5.000_6.000.s2p',
1multibias_spar_-5.000_8.000.s2p',
1multibias_spar_-6.000_0.000.s2p',
1multibias_spar_-6.000_10.000.s2p',
1multibias_spar_-6.000_2.000.s2p',
1multibias_spar_-6.000_4.000.s2p',
1multibias_spar_-6.000_6.000.s2p',
1multibias_spar_-6.000_8.000.s2p',
1multibias_spar_-7.000_0.000.s2p',
1multibias_spar_-7.000_10.000.s2p',
1multibias_spar_-7.000_2.000.s2p',
1multibias_spar_-7.000_4.000.s2p',
1multibias_spar_-7.000_6.000.s2p',
1multibias_spar_-7.000_8.000.s2p',
1multibias_spar_0.000_0.000.s2p',
1multibias_spar_0.000_10.000.s2p',
1multibias_spar_0.000_2.000.s2p',
1multibias_spar_0.000_4.000.s2p',
1multibias_spar_0.000_6.000.s2p',
1multibias_spar_0.000_8.000.s2p']
Как отсортировать список имен файлов чтобы оно начиналось с файла 0.000_0.000 до -7.000_10.000 Желаймый результат:
['1multibias_spar_0.000_0.000.s2p',
'1multibias_spar_0.000_2.000.s2p',
'1multibias_spar_0.000_4.000.s2p',
'1multibias_spar_0.000_6.000.s2p',
'1multibias_spar_0.000_8.000.s2p',
'1multibias_spar_0.000_10.000.s2p',
'1multibias_spar_-1.000_0.000.s2p',
'1multibias_spar_-1.000_2.000.s2p',
'1multibias_spar_-1.000_4.000.s2p',
'1multibias_spar_-1.000_6.000.s2p',
'1multibias_spar_-1.000_8.000.s2p',
'1multibias_spar_-1.000_10.000.s2p',
'1multibias_spar_-2.000_0.000.s2p',
'1multibias_spar_-2.000_2.000.s2p',
'1multibias_spar_-2.000_4.000.s2p',
'1multibias_spar_-2.000_6.000.s2p',
'1multibias_spar_-2.000_8.000.s2p',
'1multibias_spar_-2.000_10.000.s2p',
'1multibias_spar_-3.000_0.000.s2p',
'1multibias_spar_-3.000_2.000.s2p',
'1multibias_spar_-3.000_4.000.s2p',
'1multibias_spar_-3.000_6.000.s2p',
'1multibias_spar_-3.000_8.000.s2p',
'1multibias_spar_-3.000_10.000.s2p',
'1multibias_spar_-4.000_0.000.s2p',
'1multibias_spar_-4.000_2.000.s2p',
'1multibias_spar_-4.000_4.000.s2p',
'1multibias_spar_-4.000_6.000.s2p',
'1multibias_spar_-4.000_8.000.s2p',
'1multibias_spar_-4.000_10.000.s2p',
'1multibias_spar_-5.000_0.000.s2p',
'1multibias_spar_-5.000_2.000.s2p',
'1multibias_spar_-5.000_4.000.s2p',
'1multibias_spar_-5.000_6.000.s2p',
'1multibias_spar_-5.000_8.000.s2p',
'1multibias_spar_-5.000_10.000.s2p',
'1multibias_spar_-6.000_0.000.s2p',
'1multibias_spar_-6.000_2.000.s2p',
'1multibias_spar_-6.000_4.000.s2p',
'1multibias_spar_-6.000_6.000.s2p',
'1multibias_spar_-6.000_8.000.s2p',
'1multibias_spar_-6.000_10.000.s2p',
'1multibias_spar_-7.000_0.000.s2p',
'1multibias_spar_-7.000_2.000.s2p',
'1multibias_spar_-7.000_4.000.s2p',
'1multibias_spar_-7.000_6.000.s2p',
'1multibias_spar_-7.000_8.000.s2p',
'1multibias_spar_-7.000_10.000.s2p']
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Вызываем сортировку с ключом сортировки. Ключом будут 2 числа, полученных из названии файла:
def get_key(file_name: str) -> (int, int):
m = re.search(r'_-?([.\d]+)_-?([.\d]+)\.s2p', file_name)
num1 = m.group(1).replace('.', '')
num2 = m.group(2).replace('.', '')
return int(num1), int(num2)
Пример:
import re
def get_key(file_name: str) -> (int, int):
m = re.search(r'_-?([.\d]+)_-?([.\d]+)\.s2p', file_name)
num1 = m.group(1).replace('.', '')
num2 = m.group(2).replace('.', '')
return int(num1), int(num2)
items = ['1multibias_spar_-1.000_0.000.s2p',
'1multibias_spar_-1.000_10.000.s2p',
'1multibias_spar_-1.000_2.000.s2p',
'1multibias_spar_-1.000_4.000.s2p',
'1multibias_spar_-1.000_6.000.s2p',
'1multibias_spar_-1.000_8.000.s2p',
'1multibias_spar_-2.000_0.000.s2p',
'1multibias_spar_-2.000_10.000.s2p',
'1multibias_spar_-2.000_2.000.s2p',
'1multibias_spar_-2.000_4.000.s2p',
'1multibias_spar_-2.000_6.000.s2p',
'1multibias_spar_-2.000_8.000.s2p',
'1multibias_spar_-3.000_0.000.s2p',
'1multibias_spar_-3.000_10.000.s2p',
'1multibias_spar_-3.000_2.000.s2p',
'1multibias_spar_-3.000_4.000.s2p',
'1multibias_spar_-3.000_6.000.s2p',
'1multibias_spar_-3.000_8.000.s2p',
'1multibias_spar_-4.000_0.000.s2p',
'1multibias_spar_-4.000_10.000.s2p',
'1multibias_spar_-4.000_2.000.s2p',
'1multibias_spar_-4.000_4.000.s2p',
'1multibias_spar_-4.000_6.000.s2p',
'1multibias_spar_-4.000_8.000.s2p',
'1multibias_spar_-5.000_0.000.s2p',
'1multibias_spar_-5.000_10.000.s2p',
'1multibias_spar_-5.000_2.000.s2p',
'1multibias_spar_-5.000_4.000.s2p',
'1multibias_spar_-5.000_6.000.s2p',
'1multibias_spar_-5.000_8.000.s2p',
'1multibias_spar_-6.000_0.000.s2p',
'1multibias_spar_-6.000_10.000.s2p',
'1multibias_spar_-6.000_2.000.s2p',
'1multibias_spar_-6.000_4.000.s2p',
'1multibias_spar_-6.000_6.000.s2p',
'1multibias_spar_-6.000_8.000.s2p',
'1multibias_spar_-7.000_0.000.s2p',
'1multibias_spar_-7.000_10.000.s2p',
'1multibias_spar_-7.000_2.000.s2p',
'1multibias_spar_-7.000_4.000.s2p',
'1multibias_spar_-7.000_6.000.s2p',
'1multibias_spar_-7.000_8.000.s2p',
'1multibias_spar_0.000_0.000.s2p',
'1multibias_spar_0.000_10.000.s2p',
'1multibias_spar_0.000_2.000.s2p',
'1multibias_spar_0.000_4.000.s2p',
'1multibias_spar_0.000_6.000.s2p',
'1multibias_spar_0.000_8.000.s2p']
needs = ['1multibias_spar_0.000_0.000.s2p',
'1multibias_spar_0.000_2.000.s2p',
'1multibias_spar_0.000_4.000.s2p',
'1multibias_spar_0.000_6.000.s2p',
'1multibias_spar_0.000_8.000.s2p',
'1multibias_spar_0.000_10.000.s2p',
'1multibias_spar_-1.000_0.000.s2p',
'1multibias_spar_-1.000_2.000.s2p',
'1multibias_spar_-1.000_4.000.s2p',
'1multibias_spar_-1.000_6.000.s2p',
'1multibias_spar_-1.000_8.000.s2p',
'1multibias_spar_-1.000_10.000.s2p',
'1multibias_spar_-2.000_0.000.s2p',
'1multibias_spar_-2.000_2.000.s2p',
'1multibias_spar_-2.000_4.000.s2p',
'1multibias_spar_-2.000_6.000.s2p',
'1multibias_spar_-2.000_8.000.s2p',
'1multibias_spar_-2.000_10.000.s2p',
'1multibias_spar_-3.000_0.000.s2p',
'1multibias_spar_-3.000_2.000.s2p',
'1multibias_spar_-3.000_4.000.s2p',
'1multibias_spar_-3.000_6.000.s2p',
'1multibias_spar_-3.000_8.000.s2p',
'1multibias_spar_-3.000_10.000.s2p',
'1multibias_spar_-4.000_0.000.s2p',
'1multibias_spar_-4.000_2.000.s2p',
'1multibias_spar_-4.000_4.000.s2p',
'1multibias_spar_-4.000_6.000.s2p',
'1multibias_spar_-4.000_8.000.s2p',
'1multibias_spar_-4.000_10.000.s2p',
'1multibias_spar_-5.000_0.000.s2p',
'1multibias_spar_-5.000_2.000.s2p',
'1multibias_spar_-5.000_4.000.s2p',
'1multibias_spar_-5.000_6.000.s2p',
'1multibias_spar_-5.000_8.000.s2p',
'1multibias_spar_-5.000_10.000.s2p',
'1multibias_spar_-6.000_0.000.s2p',
'1multibias_spar_-6.000_2.000.s2p',
'1multibias_spar_-6.000_4.000.s2p',
'1multibias_spar_-6.000_6.000.s2p',
'1multibias_spar_-6.000_8.000.s2p',
'1multibias_spar_-6.000_10.000.s2p',
'1multibias_spar_-7.000_0.000.s2p',
'1multibias_spar_-7.000_2.000.s2p',
'1multibias_spar_-7.000_4.000.s2p',
'1multibias_spar_-7.000_6.000.s2p',
'1multibias_spar_-7.000_8.000.s2p',
'1multibias_spar_-7.000_10.000.s2p']
items.sort(key=get_key)
print(items)
print(needs)
print(items == needs)
Результат:
['1multibias_spar_0.000_0.000.s2p', '1multibias_spar_0.000_2.000.s2p', '1multibias_spar_0.000_4.000.s2p', '1multibias_spar_0.000_6.000.s2p', '1multibias_spar_0.000_8.000.s2p', '1multibias_spar_0.000_10.000.s2p', '1multibias_spar_-1.000_0.000.s2p', '1multibias_spar_-1.000_2.000.s2p', '1multibias_spar_-1.000_4.000.s2p', '1multibias_spar_-1.000_6.000.s2p', '1multibias_spar_-1.000_8.000.s2p', '1multibias_spar_-1.000_10.000.s2p', '1multibias_spar_-2.000_0.000.s2p', '1multibias_spar_-2.000_2.000.s2p', '1multibias_spar_-2.000_4.000.s2p', '1multibias_spar_-2.000_6.000.s2p', '1multibias_spar_-2.000_8.000.s2p', '1multibias_spar_-2.000_10.000.s2p', '1multibias_spar_-3.000_0.000.s2p', '1multibias_spar_-3.000_2.000.s2p', '1multibias_spar_-3.000_4.000.s2p', '1multibias_spar_-3.000_6.000.s2p', '1multibias_spar_-3.000_8.000.s2p', '1multibias_spar_-3.000_10.000.s2p', '1multibias_spar_-4.000_0.000.s2p', '1multibias_spar_-4.000_2.000.s2p', '1multibias_spar_-4.000_4.000.s2p', '1multibias_spar_-4.000_6.000.s2p', '1multibias_spar_-4.000_8.000.s2p', '1multibias_spar_-4.000_10.000.s2p', '1multibias_spar_-5.000_0.000.s2p', '1multibias_spar_-5.000_2.000.s2p', '1multibias_spar_-5.000_4.000.s2p', '1multibias_spar_-5.000_6.000.s2p', '1multibias_spar_-5.000_8.000.s2p', '1multibias_spar_-5.000_10.000.s2p', '1multibias_spar_-6.000_0.000.s2p', '1multibias_spar_-6.000_2.000.s2p', '1multibias_spar_-6.000_4.000.s2p', '1multibias_spar_-6.000_6.000.s2p', '1multibias_spar_-6.000_8.000.s2p', '1multibias_spar_-6.000_10.000.s2p', '1multibias_spar_-7.000_0.000.s2p', '1multibias_spar_-7.000_2.000.s2p', '1multibias_spar_-7.000_4.000.s2p', '1multibias_spar_-7.000_6.000.s2p', '1multibias_spar_-7.000_8.000.s2p', '1multibias_spar_-7.000_10.000.s2p']
['1multibias_spar_0.000_0.000.s2p', '1multibias_spar_0.000_2.000.s2p', '1multibias_spar_0.000_4.000.s2p', '1multibias_spar_0.000_6.000.s2p', '1multibias_spar_0.000_8.000.s2p', '1multibias_spar_0.000_10.000.s2p', '1multibias_spar_-1.000_0.000.s2p', '1multibias_spar_-1.000_2.000.s2p', '1multibias_spar_-1.000_4.000.s2p', '1multibias_spar_-1.000_6.000.s2p', '1multibias_spar_-1.000_8.000.s2p', '1multibias_spar_-1.000_10.000.s2p', '1multibias_spar_-2.000_0.000.s2p', '1multibias_spar_-2.000_2.000.s2p', '1multibias_spar_-2.000_4.000.s2p', '1multibias_spar_-2.000_6.000.s2p', '1multibias_spar_-2.000_8.000.s2p', '1multibias_spar_-2.000_10.000.s2p', '1multibias_spar_-3.000_0.000.s2p', '1multibias_spar_-3.000_2.000.s2p', '1multibias_spar_-3.000_4.000.s2p', '1multibias_spar_-3.000_6.000.s2p', '1multibias_spar_-3.000_8.000.s2p', '1multibias_spar_-3.000_10.000.s2p', '1multibias_spar_-4.000_0.000.s2p', '1multibias_spar_-4.000_2.000.s2p', '1multibias_spar_-4.000_4.000.s2p', '1multibias_spar_-4.000_6.000.s2p', '1multibias_spar_-4.000_8.000.s2p', '1multibias_spar_-4.000_10.000.s2p', '1multibias_spar_-5.000_0.000.s2p', '1multibias_spar_-5.000_2.000.s2p', '1multibias_spar_-5.000_4.000.s2p', '1multibias_spar_-5.000_6.000.s2p', '1multibias_spar_-5.000_8.000.s2p', '1multibias_spar_-5.000_10.000.s2p', '1multibias_spar_-6.000_0.000.s2p', '1multibias_spar_-6.000_2.000.s2p', '1multibias_spar_-6.000_4.000.s2p', '1multibias_spar_-6.000_6.000.s2p', '1multibias_spar_-6.000_8.000.s2p', '1multibias_spar_-6.000_10.000.s2p', '1multibias_spar_-7.000_0.000.s2p', '1multibias_spar_-7.000_2.000.s2p', '1multibias_spar_-7.000_4.000.s2p', '1multibias_spar_-7.000_6.000.s2p', '1multibias_spar_-7.000_8.000.s2p', '1multibias_spar_-7.000_10.000.s2p']
True
Автор решения: SergFSM
→ Ссылка
Такой ключ вроде дает тот же результат:
from re import search
files = sorted(items, key=lambda x: tuple(map(int, search(r'_-?(\d+).+_(\d+)', x).groups())))