python 编码 gzip 字符串

标签 python encoding gzip

我想解压该字符串 "\x1F\x8B\x08\x00\x00\x00\x00\x00\x00\x00UP]k\xC3\x14\xFD+\xC3\xE7\xCD\xA8\xF9X\xE2\xEBX\xA1\x0CF\x1F\xBA\xEE%\x10\xAC\xB1\xAD\xC4h\x88f%\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\xF6\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解释器模式并将字符串粘贴到命令行中代码就是工作

我想这是字符集问题,但我无法修复它!所以我希望有人给我一个解决方案! 我的代码是blow,工作环境是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 library .

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

import gzip

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

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

import gzip
import StringIO

compressed_data = "\x1F\x8B\x08\x00\x00\x00\x00\x00\x00\x00UP]k\xC3 \x14\xFD+\xC3\xE7\xCD\xA8\xF9X\xE2\xEBX\xA1\x0CF\x1F\xBA\xEE%\x10\xAC\xB1\xAD\xC4h\x88f%\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\xF6\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\xB4*l\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"

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

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

关于python 编码 gzip 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36845825/

相关文章:

php 在浏览器中默认设置编码 iso-8859-1

curl - CentOs:无法使用 curl 提取下载的 tar

linux - 用于列表和 grep Bash 的两个 Onelinner For Cycle

python - json.dump - UnicodeDecodeError : 'utf8' codec can't decode byte 0xbf in position 0: invalid start byte

c# - Asp.net 4.0 网络服务压缩

python - 用于 Django 模型的 manage.py sql 命令 - Django

python - 如何确定不带空格的字符串中列表中的匹配项数?

python - 列表在合并排序的递归循环中创建后返回无类型

python - 使用 python 在 Heroku 上启用压缩

c++ - 将 3 个数字数据压缩为一个字节