我有一些二进制数据,在 Python 中以字节字符串数组的形式存在。
是否有一种可移植的方法来序列化其他语言可以读取的数据?
JSON 失败是因为我刚刚发现它没有真正的方法来存储二进制数据;它的字符串应该是 Unicode。
我不想使用pickle
因为我不希望存在安全风险,这限制了它在其他 Python 程序中的使用。
有什么建议吗?我真的很想使用一个内置库(或者至少是标准 Anaconda 发行版的一部分)。
如果您只需要字符串中的二进制数据并且可以轻松恢复各个字符串之间的边界,则可以将它们作为原始字符串直接写入文件。
如果您无法轻松恢复字符串边界,JSON 似乎是一个不错的选择:
a = [b"abc\xf3\x9c\xc6", b"xyz"]
serialised = json.dumps([s.decode("latin1") for s in a])
print [s.encode("latin1") for s in json.loads(serialised)]
将打印
['abc\xf3\x9c\xc6', 'xyz']
这里的技巧是任意二进制字符串都是有效的latin1
,因此它们始终可以解码为 Unicode 并再次编码回原始字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)