【问题标题】:decompressing string from database in python在python中从数据库中解压缩字符串
【发布时间】:2022-11-04 00:14:18
【问题描述】:

我知道这个问题看起来有点不清楚,但我达到了某种程度的挫败感,促使我在这里问这个问题。

我正在处理来自 POSTGRESQL 数据库的数据,我得到如下信息:

2022-06-01 02:21:52.770293  2022-06-01 02:21:52.78704   \\x0a78daa5534d6fe32014fc2fdca90063b0c9a91f52d...
2022-06-01 02:21:55.991809  2022-06-01 02:21:56.04597   \\x0a78dac5534d6be33010fd2fbe2b58b264c9caa9ed4...

我知道压缩字符串中的计数器列包含类似 JSON 的数据。 我知道(因为过去已经解压过)zlib 包的使用可以解压这个字符串(通过类似zlib.decompress(mycompressedstring)

但是这里缺少一个步骤,因为这个字符串\\x0a78... 是不可解压缩的。 我怀疑在调用 zlib 之前有一个编码解码工作要做,但我很难找到该怎么做..

我试过了:

test = bytes(sample.iloc[1]['counter'], 'UTF16')

这导致类似:

我在想它更好,但 zlib 无法解压缩

testunc = zlib.decompress(test)
error: Error -3 while decompressing data: incorrect header check

请问,有人可以帮我吗?通过给我一个跟踪来找出这有什么问题......

【问题讨论】:

标签: python encoding zlib bytea


【解决方案1】:

78da... 开头的十六进制表示是有效 zlib 流的开始。您需要丢弃\x0a 并将余数从十六进制转换为二进制。结果将提供给zlib.decompress()。查看binascii 中的a2b_hex

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多