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

Qui*_*tic 22 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
Run Code Online (Sandbox Code Playgroud)

这使:

eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=
Run Code Online (Sandbox Code Playgroud)

现在我可以将此代码复制到另一个程序以获取原始变量:

import zlib, base64
s='eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU='
data = zlib.decompress(base64.b64decode(s))
print data
Run Code Online (Sandbox Code Playgroud)

如果您知道任何其他压缩方法可以提供与上述代码一致的更好结果,请建议.

Tim*_*ker 11

计划1:

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

这会将压缩的字符串保存在一个调用的文件中,temp.zlib以便程序2以后可以检索并解压缩它.

计划2:

with open("temp.zlib", "rb") as myfile:
    S = myfile.read()
T = zlib.decompress(S)
Run Code Online (Sandbox Code Playgroud)

  • 这在当时可能是正确的。使用python 3.6.5:`TypeError:需要一个类似字节的对象,而不是'str'` (5认同)