使用 Python3.6 解压缩 gz 压缩字符串



我想使用 python3.6 解压缩以下 gz 压缩字符串:

H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA==

解压缩的字符串是">Hello World">

我能够使用在线工具解压缩它 - http://www.txtwizard.net/compression 但我找不到在 python 中做到这一点的正确方法。

我尝试了 zlib 和 gzip,但它们需要字节而不是 str。我还尝试使用 io 转换它。字节(( 但没有用。我的代码是:

import gzip
import io 
class SearchEvents:
def decompressPayload():
    payload = "H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA=="
    payload_bytes = io.BytesIO(payload)
    print(gzip.decompress(payload_bytes))
SearchEvents.decompressPayload()

我期待">你好世界"作为输出。但是我收到以下错误:

Traceback (most recent call last):
File "SearchEvents.py", line 13, in <module>
SearchEvents.decompressPayload()
File "SearchEvents.py", line 10, in decompressPayload
payload_bytes = io.BytesIO(payload)
TypeError: a bytes-like object is required, not 'str'

有什么方法可以实现我想要的吗?

我想使用 python3.6 解压缩以下 gz 压缩字符串:

...==

这不是 gzip 压缩的字符串。至少,直到你首先对Base64进行解码。

>>> gzip.decompress(base64.b64decode('H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA=='))
b'Hello World'

对于需要bytes的东西,给它bytes。添加b前缀以使bytes文字化,例如:

gzip.decompress(b"H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA==")

这不起作用,因为这不是有效的压缩数据。它看起来像是base64编码的,所以通过将其与binascii相结合,你会得到:

import binascii
import gzip
gzip.decompress(binascii.a2b_base64(b"H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA=="))

产生b'Hello World'

最新更新