2016-12-14 7 views
0

У меня есть куча длинных строк (16200 символов), которые я хочу сжать. Вся строка использует только 12 разных символов (в настоящее время _oOwWgGmdDsS и, но при необходимости они могут измениться).Сжатие простого текста в текст

Я ищу для сжатия этой строки. В настоящее время я создал схему сжатия, где каждый раз, когда я сначала помещаю символ, а затем сколько раз он появляется перед тем, как другой находится в строке. Так что если несжатый текст выглядит следующим образом:

ooooooWW_ 

Затем сжатый становится

o6W2_1 

Для строк я в настоящее время имею это уменьшило размер примерно от 128 Мб до 4 Мб. Однако, как вы можете видеть, для W нет спасения, а для _ есть даже потеря.

Так что мне было интересно, существуют ли более сложные схемы сжатия, которые я могу использовать? Конечным результатом должен быть простой текст, а не двоичные данные.

Примечание: Было бы также замечательно, если для них существует библиотека для Python и Lua.

+1

Вам не нужно добавлять '1'. Ваш декодер может предположить, что если цифра не соответствует другому символу, то этот символ появляется только один раз. –

ответ

1

Используйте zlib для сжатия в двоичном формате, а затем base64, чтобы развернуть двоичный текст в обычный текст. Python имеет встроенный интерфейс. Небольшой поиск в Google приведет к привязкам Lua к zlib и base64.

Смежные вопросы