如何将字符串经gzip压缩后得到字符串格式的输出?
解决Python Gzip压缩后转字符串的问题
gzip压缩生成的是二进制字节流,这类数据并非合法的UTF-8编码内容(比如开头的0x8b是gzip的固定标识字节,不符合UTF-8编码规则),所以直接用utf-8解码必然抛出UnicodeDecodeError。
要得到类似目标网站的字符串格式输出,你需要用Base64编码把二进制压缩结果转换成可打印的纯文本字符串——这也是这类在线工具的通用实现方式。
实现代码
压缩为字符串
import gzip import base64 def gzip_to_string(text): # 1. 将原始字符串转为UTF-8字节 text_bytes = text.encode("utf-8") # 2. 执行gzip压缩 compressed_bytes = gzip.compress(text_bytes) # 3. 用Base64编码为字符串 return base64.b64encode(compressed_bytes).decode("utf-8") # 测试示例 test_text = "这是一段用于测试Gzip压缩的文本内容" compressed_str = gzip_to_string(test_text) print(compressed_str)
从字符串还原原始内容
如果需要反向解压缩,对应代码如下:
def string_to_gzip(compressed_str): # 1. 解码Base64得到压缩字节 compressed_bytes = base64.b64decode(compressed_str) # 2. 执行gzip解压缩 decompressed_bytes = gzip.decompress(compressed_bytes) # 3. 转为原始字符串 return decompressed_bytes.decode("utf-8") # 测试还原 restored_text = string_to_gzip(compressed_str) print(restored_text)
Base64编码后的字符串完全由可打印ASCII字符组成,和你提到的在线工具输出格式一致,既可以安全存储也能方便传输。
内容的提问来源于stack exchange,提问作者White_145
相关产品推荐
相关产品推荐

