web-dev-qa-db-ja.com

文字列を圧縮し、zlibを使用して文字列を取得するにはどうすればよいですか?

テキスト圧縮に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
_

上記のコードと一致するより良い結果をもたらす他の圧縮方法を知っているかどうかを提案してください

22
Quixotic

プログラム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)
11
Tim Pietzcker