用utf8字符串解码msgpack_numpy

2024-09-24 02:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我将python3.6与msgpack==0.5.1msgpack_numpy==0.4.2一起使用。在

当试图对dict进行编码和解码时,要使用utf-8处理的字符串needs将dict的密钥还原为字符串(而不是二进制文件)。在

例如:

import msgpack

d = {'key': None}
binary = msgpack.packb(d)

ret = msgpack.unpackb(binary)
ret.keys()
>>> dict_keys([b'key'])

ret = msgpack.unpackb(binary, encoding='utf-8')
ret.keys()
>>> dict_keys(['key'])

但是,当使用msgpack_numpy时,传递encoding='utf-8'会阻止numpy解码:

^{pr2}$

是否可以使用msgpacknumpy数组进行编码/解码,而不将dict的键替换为二进制?在


Tags: key字符串numpy编码二进制msgpackkeys解码
1条回答
网友
1楼 · 发布于 2024-09-24 02:26:14

我摆弄了不同的打包选项,发现在打包对象时使用use_bin_type=True可以解决问题。在

import msgpack
import numpy as np
import msgpack_numpy as m
m.patch()

d = {'key': np.arange(5)}
binary = msgpack.packb(d, use_bin_type=True)

ret = msgpack.unpackb(binary, encoding='utf-8')
ret.keys()
>>> dict_keys(['key'])
ret['key']
>>> array([0, 1, 2, 3, 4])

相关问题 更多 >