我想使用 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'