1

简而言之,我想知道是否有某种安全的 Python 序列化程序,例如 JSON 用于 Javascript。我知道 Python 有一个 JSON 模块,但我想要一些更特定于 python 的东西,具有读取元组和可能集合的能力,如下所示:

  [ (3,7), (8,15), (17,21) ]

无需求助于“评估”功能。

4

3 回答 3

3

你可能想看看ast.literal_eval你是否使用 2.6+

from ast import literal_eval

s = "[ (3,7), (8,15), (17,21) ]"
t = literal_eval(s)
# [(3, 7), (8, 15), (17, 21)]

type(t)
<type 'list'>
type(t[0])
<type 'tuple'>

或者,或者查看http://pyparsing.wikispaces.com/Examplespyparsing上的 parsePythonValue.py 示例

于 2012-09-10T09:20:51.430 回答
0

使用泡菜模块。从文档中引用:

警告 pickle 模块并非旨在防止错误或恶意构造的数据。永远不要取消从不受信任或未经身份验证的来源收到的数据。

本文非常适合在 unpickling(从序列化数据中读取)时实现一些安全性。

于 2012-09-10T09:22:46.200 回答
0

如果您希望将数据序列化为二进制格式,则可以使用 pickle。如果您希望将数据序列化为文本格式,那么答案是否定的。

如果唯一缺少的区别是列表和元组(可能还有集合),那么最好的选择可能是使用自定义 json 编码器/解码器。有关一些示例,请参见http://docs.python.org/library/json.html

于 2012-09-10T09:28:06.960 回答