如何压缩字符串,并使用zlib获取字符串?

时间:2011-01-30 20:33:32

标签: python compression

我正在尝试利用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 个答案:

答案 0 :(得分:11)

计划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)