|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
|
Порядок обработки файлов (сортировка)21.01.2020, 18:56. Показов 2264. Ответов 16
Доброго времени суток, форумчане!
Друзья, проблема такая. Имеется простенькая программа по составлению excel-файла с содержанием путём обработки всех Эксель файлов в директории. Ввиду своеобразного сравнения строк, Питон обрабатывает файл с номером 09-01.2.8И3-2-1 в самом конце, хотя должен брать в начале. Как сделать так, чтобы интерпретатор брал их в том же порядке, как они сортируются Windows? Чтобы сначала он брал 09-1.2.6И2-0-2, затем 09-01.2.8И3-2-1, потом все остальные. Файлы перебираю через for file in glob.glob(‘0*.xls’). К сожалению, изменить наименование файлов не представляется возможным, они должны быть вот такими. https://sun9-43.userapi.com/c2... Cpjwm4.jpg https://sun9-27.userapi.com/c8... 2IgEHs.jpg
0
|
|
| 21.01.2020, 18:56 | |
|
Ответы с готовыми решениями:
16
Загрузка JSON файлов. Порядок обработки
|
|
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
|
|
| 21.01.2020, 19:19 | |
|
то есть я так понимаю порядок определяется тут 09-01.2.6И2-0-2,09-01.2.8И3-2-1 и двух файлов с одинаковым числом в этой позиции не бывает?
1
|
|
|
|
|||||||
| 21.01.2020, 19:21 | |||||||
|
09-1.2.6И2-0-2.txt У меня так винда сортирует. По лексикографическому возрастанию. И glob точно также берет:
1
|
|||||||
|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
|||
| 21.01.2020, 19:31 [ТС] | |||
|
1)09-01.2.6И2-0-2.xls 2)09-01.2.8И3-2-1.xls 3)09-01.2.12И2-0-1.xls 4)09-01.2.12И2-0-2.xls 5)09-01.2.13И2-2.xls 6)09-01.2.14И2-1.xls 7)09-01.2.14И2-2И1.xls 8)09-01.2.15И2-1.xls 9)09-01.2.15И2-2.xls 10)09-01.2.18И1-1.xls А glob.glob сортирует: 1)09-01.2.12И2-0-1.xls 2)09-01.2.12И2-0-2.xls 3)09-01.2.13И2-2.xls 4)09-01.2.14И2-1.xls 5)09-01.2.14И2-2И1.xls 6)09-01.2.15И2-1.xls 7)09-01.2.15И2-2.xls 8)09-01.2.18И1-1.xls 9)09-01.2.6И2-0-2.xls 10)09-01.2.8И3-2-1.xls мне соответственно нужна та же сортировка, как и в винде Добавлено через 2 минуты 09-01.2.6И2-0-1 09-01.2.6И2-0-2 Но полностью двух одинаковых номеров быть не может.
0
|
|||
|
|
|
| 21.01.2020, 19:48 | |
|
В общем так: винда (по историческим причинам) сортирует неверно (не в посимвольном лексикографиеском порядке, а по своим правилам).
Это все что я могу сказать.
1
|
|
|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
||
| 21.01.2020, 19:50 [ТС] | ||
|
0
|
||
|
|
|
| 21.01.2020, 19:52 | |
|
У меня нет алгоритма сортировки винды. Винда это система с закрытым исходным кодом :-).
Все что что нагуглил, это то что она игнорирует некоторые символы и объединяет цифры в одно число при сортировке.
1
|
|
|
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
|
||||||
| 21.01.2020, 19:54 | ||||||
|
azlimanty, ну вот в этом и загвоздка. допустим по значениям перед И отсортировать не проблема
09-01.2.6И2-0-1.xls 09-01.2.6И2-0-2.xls 09-01.2.6И2-0-2.xls 09-01.2.8И3-2-1.xls 09-01.2.12И2-0-1.xls 09-01.2.12И2-0-2.xls 09-01.2.13И2-2.xls 09-01.2.14И2-1.xls 09-01.2.14И2-2И1.xls 09-01.2.15И2-1.xls 09-01.2.15И2-2.xls 09-01.2.18И1-1.xls но как видно первые три отсортированы не правильно а вот по каким признакам это происходит не пойму
1
|
||||||
|
|
|
| 21.01.2020, 20:22 | |
|
Semen-Semenich,
Нужно игнорировать дефис, объединять цифры в число и сравнивать числа (целиком) как числа, а не как строки. Можно еще заюзать виндовый компаратор StrCmpLogicalW. Винда так (примерно) делает.
1
|
|
|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
||
| 21.01.2020, 20:25 [ТС] | ||
|
https://stackoverflow.com/ques... -algorithm
0
|
||
|
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
|
|
| 21.01.2020, 20:29 | |
|
Garry Galler, я тоже так подумал
09-01.2.12И2-0-2 > 0901212202 int> 901212202 09-01.2.13И2-2 > 090121322 int > 90121322 >>> 901212202 < 90121322 False а как строка >>> 'И2-0-2' < 'И2-2' True вот в чем вопрос
1
|
|
|
|
||||||||||||
| 21.01.2020, 20:57 | ||||||||||||
Сообщение было отмечено azlimanty как решение
Решение
Через компаратор StrCmpLogicalW:
А в 'И2-0-2' < 'И2-2 - числа 202 и 22 сравниваются как числа.
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
||
| 21.01.2020, 21:00 [ТС] | ||
|
Ошибка: ERROR: Could not find a version that satisfies the requirement ctypes (from versions: none) ERROR: No matching distribution found for ctypes Пробовал установить как через cmd, так и через Pycharm Добавлено через 24 секунды pip обновил до последней версии, если это важно
0
|
||
|
|
|
| 21.01.2020, 21:02 | |
|
Это встроенная либа. Ее не надо ставить.
1
|
|
|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
|
| 21.01.2020, 21:03 [ТС] | |
|
0
|
|
|
|
|
| 21.01.2020, 21:07 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 11.01.2020
Сообщений: 13
|
|
| 21.01.2020, 21:13 [ТС] | |
|
['09-01.2.6И2-0-2.xls',
'09-01.2.8И3-2-1.xls', '09-01.2.12И2-0-1.xls', '09-01.2.12И2-0-2.xls', '09-01.2.13И2-2.xls', '09-01.2.14И2-1.xls', '09-01.2.14И2-2И1.xls', '09-01.2.15И2-1.xls', '09-01.2.15И2-2.xls', '09-01.2.18И1-1.xls'][/quote] Благодарю!
0
|
|
| 21.01.2020, 21:13 | |
|
Помогаю со студенческими работами здесь
17
Порядок обработки сообщений от Web сервера Как изменить порядок обработки шаблонов Word? Порядок обработки правил при валидации (jQuery Validation) По алгоритму Джонсона выстроить оптимальный порядок обработки деталей Порядок обработки аргументов при раскытии Variadic Template Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|