Как сжать текст?

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

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

EDIT: Я думаю, у меня есть способ решить его, вот так:

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

который дает:

eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=

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

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

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

Ответ 1

Программа 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)

Ответ 2

Используйте рассол. Это позволяет вам сохранить объект python в поток (например, файл), который затем можно разложить в другой программе (вы также можете передавать по TCP или что у вас есть, pickle сериализует данные).

http://docs.python.org/library/pickle.html