Как отсортировать строки большого текстового файла, чтобы все было случайно.

я использую Emeditor Notepad++

если есть способ с регулярными выражениями, добавьте его тоже, если это возможно

Небольшая часть примерных строк:

0
1
3
4
5
6
7
8
9
10
A
a
B
b
C
c
D
d
E
e

Нужен результат:

E
8
e
5
a
c
9
B
1
0
b
7
3
4
A
d
C
D
10
6

1 ответ1

2

Из того, что я могу понять, ни одна из программ не имеет встроенной функции рандомизации строк (а тем более той, которая использует регулярные выражения). Тем не менее, оба имеют потенциальную возможность поддерживать эту функцию через плагины.

К сожалению, я не смог найти готовых решений для EmEditor, но есть плагин Notepad++ под названием Python Script, который поддерживает другой внешний скрипт, который может выполнять базовую рандомизацию строк из Notepad++.

Что касается критерия "большого" файла, в Notepad++ могут возникнуть проблемы с файлами большего размера (хотя открытие файла размером ~ 500 МБ, безусловно, возможно без проблем). Если вы обнаружите какие-либо ошибки, вам может потребоваться разбить файл на более мелкие куски.

Python Script Plugin и RandomizeLines.py

Сначала загрузите и установите плагин Python Script через менеджер плагинов Notepad++:

Ex. Установка плагина Python Script в диспетчере плагинов Notepad++

Плагин Python Script In Notepad++ Менеджер плагинов

Как только плагин установлен, вам нужно будет перезапустить Notepad++. После перезапуска плагин должен появиться в разделе ПлагиныPython Script.

Затем загрузите этот скрипт на основе Python «npp-randomizelines» из Github (клонирование или загрузказагрузка ZIP). Извлеките файл и выберите файл RandomizeLines.py :

Ex. RandomizeLines Master - Извлечено

RandomizeLines Master

Скопируйте RandomizeLines.py в свой Блокнот ++ПлагиныСкрипты Python → Папка скриптов . Это может быть в другом месте, чем показано в зависимости от вашей установки Notepad ++.

Ex. RandomizeLines - Блокнот ++ Папка плагинов

Размещение сценариев RandomizeLines - Папка плагинов Notepad++

Перезапустите Notepad++, и теперь у вас должна быть опция ПлагиныСкрипт PythonСценарииRandomizeLines .

Ex. Запуск сценария RandomizeLines

RandomizeLines - Запуск плагина

С вашим исходным вводом я получаю следующее после запуска скрипта:

Ex. Частичные результаты сценария

 B
 a
 c
 b
 4
 A

Заметки

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

  • Я не играл с самим плагином Python Script , но возможно, что вы могли бы расширить скрипт с помощью собственного модуля регулярных выражений Python. Что касается синтаксиса, плагин, очевидно, использует версию Python 2.7 .dll.

  • Если вы хотите подобный скрипт / плагин для EmEditor, вам, вероятно, придется написать свой собственный код на C++. Это не кажется сложной задачей (по крайней мере, для любого, кто хоть немного знаком с C++ и простым кодированием Windows), но, вероятно, это более сложная задача, чем добавление регулярных выражений в скрипт Notepad++, упомянутый выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .