Как вы сжимаете строку и получаете строку обратно, используя zlib? - PullRequest
21 голосов
/ 30 января 2011

Я пытаюсь использовать Zlib для сжатия текста.

Например, у меня есть строка T='blah blah blah blah' Мне нужно сжать ее для этой строки. Я использую S=zlib.compress(T), чтобы сжать его. Теперь я хочу получить недвоичную форму S, чтобы я мог распаковать T, но в другой программе.

Спасибо!

РЕДАКТИРОВАТЬ: Я думаю, у меня есть метод, чтобы решить, что я хотел. Вот метод:

import zlib, base64
text = 'STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW '
code =  base64.b64encode(zlib.compress(text,9))
print code

Что дает:

eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=

Теперь я могу скопировать этот код в другую программу, чтобы вернуть исходную переменную:

import zlib, base64
s='eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU='
data = zlib.decompress(base64.b64decode(s))
print data

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

1 Ответ

11 голосов
/ 30 января 2011

Программа 1:

T = 'blah blah blah blah'
S = zlib.compress(T)
with open("temp.zlib", "wb") as myfile:
    myfile.write(S)

Сохраняет сжатую строку в файле с именем temp.zlib, чтобы программа 2 могла впоследствии извлечь и распаковать ее.

Программа 2:

with open("temp.zlib", "rb") as myfile:
    S = myfile.read()
T = zlib.decompress(S)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...