我正在寻找一种简单的方法来打包/解包数据结构,以便通过网络发送:
在发送之前在客户端上:
a = ((1,2),(11,22,),(111,222))
message = pack(a)
然后在服务器上:
a = unpack(message)
是否有可以打包/解压缩魔法的库? 提前致谢
答案 0 :(得分:12)
看起来JSON可能符合要求。这很简单,it's in the Python standard library。
但是对于元组可能并不太高兴:
>>> import json
>>> a = ((1,2),(11,22,),(111,222))
>>> print a
((1, 2), (11, 22), (111, 222))
>>> message = json.dumps(a)
>>> message
'[[1, 2], [11, 22], [111, 222]]'
>>> b = json.loads(message)
>>> b
[[1, 2], [11, 22], [111, 222]]
这是否是一个问题由你来决定。
答案 1 :(得分:2)
参见pickle - Python对象序列化:
pickle
模块实现了一个基本但强大的算法,用于序列化和反序列化Python对象结构。 “Pickling”是将Python对象层次结构转换为字节流的过程,“unpickling”是反向操作,从而将字节流转换回对象层次结构。酸洗(和去除)也可称为“序列化”,“编组”或“扁平化”,但为了避免混淆,这里使用的术语是“酸洗”和“涂抹”。
答案 2 :(得分:1)
ast.literal_eval()
保留元组:
>>> a = ((1,2),(11,22,),(111,222))
>>> s = repr(a)
>>> import ast
>>> ast.literal_eval(s)
((1, 2), (11, 22), (111, 222))