Python 编码 gzip 字符串



我想解压缩这个字符串"\x1F\x8B\x08\x00\x00\x00\x00\x00\x00\x00]k\xC3 \x14\xFD+\xC3\xE7\xCD\xA8\xF9X\xE2\xEBX\xA1\x0CF\x1F\xBA\xEE%\x10\xAC\xB1\xAD\xC4h\x88 f%\x8C\xFD\xF7]\x1B\xDA\xAD\xF8\xE29\xE7z\xEE9~#\xE7\x11G\xAF\xBB\x1C=\x22\xDFv_j\x04H+@\xBAW\x1A\xEEe\x91>SF\x18+i\x9Ef\x04\x84\xA1;\x02/]\x8F\xA5Q\xC2\xF6\xC2\x075\xE2\xFE8\x89\xB1m\xA4\x85\x89V\xFB\xC1\x88\x19\xA6\xDE\xB6\x1Fe\xB6y\x08\xCA\x87\xA7N\xCD\x1E\xC4^H\x10\x F6\x19'\x19/\x14g\x92K\xC1[\x06\xCA\xB2\x9Ca\x82K@\x07m\x8F\x17B\x98\xC1\xD7\xC9a2\xA6\xD9W\xA4j\xBAI\x9E\x84\xAB\x93\x7F\x80g\x18N\x9D,\xEB\xEA\x84fyJIAI\xCE'\xAF\xC6:\xB9\x0B\xE0\xF6\xDA\xA8\x95qg0\x8FE\x87Ke\x86iQbZU\x98\x924\xD6\x1C];\xC9\xB0n\xA3Jhd\x8C\x08\xB7\xCF\x1AN\xCE\xAA-|R\x94\xB3\x82\xA6\xE0\x902v\x19\xB4l\xE7!\x9F\xEB\xD5\x1A\x88\xB3>\xE8\xBF\x85\xC1u\xCA\x22n\xA1\x11\xA4\x99wj|\x17\x8B\x0F\x86\xF2\x8D\x8C\xE5\x85\x0Cn\x9Co\xDBt\xEF\xF5\xF2X\x1A\xADlx9\x09k\x95\xB9\x9A\xC8+DtI\xB0\xD116\xFA\xF9\x05\xBAs\xAET\xE0\x01\x00\x00"

这个字符串

是通过gzip编码压缩的,我想解压缩这个,所以我把这个字符串保存在文件中,然后读取文件解压那是行不通的,否则我使用python解释器模式并将字符串粘贴到命令行中代码是有效的

我想这是字符集问题,但我无法解决它!所以我希望有人给我一个解决方案!我的代码是吹的,工作环境是Linux。

  import zlib
  file_obj=open("compress_data.log","r+")
  for gz_data in file_obj.readlines():
       print gz_data
       decompressed_data = zlib.decompress(gz_data, 16+zlib.MAX_WBITS)
       print decompressed_data

该数据采用"gzip"格式。尝试使用 Python 的内置gzip库。

如果该数据的来源是磁盘文件,请尝试以下操作:

import gzip
for data in gzip.GzipFile("compress_data.log"):
    print data

如果该数据的来源是 Python 字符串,请尝试以下操作:

import gzip
import StringIO
compressed_data = "x1Fx8Bx08x00x00x00x00x00x00x00UP]kxC3 x14xFD+xC3xE7xCDxA8xF9XxE2xEBXxA1x0CFx1FxBAxEE%x10xACxB1xADxC4hx88f%x8CxFDxF7]x1BxDAxADxF8xE29xE7zxEE9~#xE7x11GxAFxBBx1C=x22xDFv_jx04H+@xBAWx1AxEEex91>SFx18+ix9Efx04x84xA1;x02/]x8FxA5QxC2xF6xC2x075xE2xFE8x89xB1mxA4x85x89VxFBxC1x88x19xA6xDExB6x1FexB6yx08xCAx87xA7NxCDx1ExC4^Hx10xF6x19'x19/x14gx92KxC1[x06xCAxB2x9Cax82K@x07mx8Fx17Bx98xC1xD7xC9a2xA6xD9WxA4jxBAIx9Ex84xABx93x7Fx80gx18Nx9D,xEBxEAx84fyJIAIxCE'xAFxC6:xB9x0BxE0xF6xDAxA8x95qg0x8FEx87Kex86iQbZUx98x924xD6x1C];xC9xB0nxA3Jhdx8Cx08xB7xCFx1ANxCExAA-|Rx94xB3x82xA6xE0x902vx19xB4*lxE7!*x9FxEBxD5x1Ax88xB3>xE8xBFx85xC1uxCAx22nxA1x11xA4x99wj|x17x8Bx0Fx86xF2x8Dx8CxE5x85x0Cnx9CoxDBtxEFxF5xF2Xx1AxADlx9x09kx95xB9x9AxC8+DtIxB0xD116xFAxF9x05xBAsxAETxE0x01x00x00"
compressed_data = StringIO.StringIO(compressed_data)
for data in gzip.GzipFile(fileobj=compressed_data):
    print data

如果您的数据存储在磁盘文件中,作为带有 Python 转义序列的 ASCII 文本,则此程序可能适合您:

from gzip import GzipFile
from StringIO import StringIO
with open("compress_data.log") as file_obj:
    gz_data = file_obj.read().rstrip('n')
unescaped_data = gz_data.decode('string_escape')
decompressed_data = GzipFile(fileobj=StringIO(unescaped_data)).read()
print decompressed_data

注意:如果上述程序适合您,则您的数据格式为无意义。这可能是生成数据的程序中的错误的结果。

最新更新