gpt4 book ai didi

python - 使用格式模式将字符串反序列化为值

转载 作者:行者123 更新时间:2023-11-30 23:27:14 25 4
gpt4 key购买 nike

我正在尝试为(反)序列化器找到一个好的解决方案。我有一个格式模式和所有要输入的值。

格式模式如下:

msg = '$bla,%d,%02d,%02d %02d:%02d:%02d.%03d' % (kwargs['...'], ...)

当我序列化这些值时,我得到以下字符串:

bla,1990,12,24 13:37:11.001

但我还必须反序列化它。该图案的长度和类型可能有很大差异。我想仅根据格式模式反序列化字符串。

有什么想法可以实现这一点吗?

编辑:我正在使用 Python 2.7.6

最佳答案

如果您可以完全控制协议(protocol),或者说序列化后格式化,我建议使用一些现有的解决方案,例如 Pickle由Python标准库提供,Json在网络上很流行,或者Protobuf这是 Google 提供的跨语言

Pickle :

>>> import pickle
>>> formattuple = (1990,12,24,13,37,11,1)
>>> s = pickle.dumps(formattuple)
>>> s
'(I1990\nI12\nI24\nI13\nI37\nI11\nI1\ntp0\n.'
>>> pickle.loads(s)
(1990, 12, 24, 13, 37, 11, 1)

Json :

>>> import json
>>> formattuple = (1990,12,24,13,37,11,1)
>>> s = json.dumps(formattuple)
>>> s
'[1990, 12, 24, 13, 37, 11, 1]'
>>> json.loads(s)
[1990, 12, 24, 13, 37, 11, 1]

请注意,json 有一些限制,例如序列化和反序列化除 dict、list 和 tuple 之外的对象有点困难。并且不会反序列化为完全相同的格式,因为 json 中不存在某些数据结构(例如元组)

Protobuf是一个更强大但更复杂的解决方案。您需要首先定义数据模式。

关于python - 使用格式模式将字符串反序列化为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com