python - 如何膨胀压缩的 base64d 字符串

python - how to inflate gzipped, base64d string

我只是想知道如何 inflate/decompress 一个文本字符串,它是 gzipped 压缩字符串,也有 base64 编码?

例如,所有 python 示例似乎都专注于打开文件,而我想处理 gzipped 字符串。

您可以使用 base64 和 zlib 库:

import base64, zlib
decoded_data = zlib.decompress(base64.b64decode(encoded_data))

gzip 模块仅用于文件操作:https://docs.python.org/2/library/gzip.html。 它使用 zlib 实际 compression/decompression.

gzip 模块中的 GzipFile 允许您提供 fileobj 参数。如果字符串确实是 gzipped(即:它具有正确的 headers),那么您可以将字符串包装在 StringIO object 中并传递它大约

import base64
import gzip
from io import StringIO

gzippedstr = fetchgzippedstr()  # wherever it may come from
gzcontent = gzip.GzipFile(fileobj=StringIO(gzippedstr))
b64content = gzcontent.read()
content = base64.b64decode(b64content)

在 python3 下,其他答案对我没有帮助,但我发现了这个:

import base64
import zlib
data = 'H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=='

json_str = zlib.decompress(base64.b64decode(data), 16 + zlib.MAX_WBITS).decode('utf-8')

希望这对您有所帮助

对我来说,以下代码效果最好(没有文件的 gzip)

import base64
import gzip

base64_message = # string containing base64 encoded data
base64_bytes = base64_message.encode('utf-8')
message_bytes = base64.b64decode(base64_bytes)
print(gzip.decompress(message_bytes))