简而言之,我想知道是否存在某种安全的Python序列化器,如JSON是用于Javascript的。我知道Python有一个JSON模块,但我想更多的东西Python特定的,有阅读的元组的能力,也许设置,就像这样:无需求助于“EVAL”功能安全阅读Python文字
[ (3,7), (8,15), (17,21) ]
。
简而言之,我想知道是否存在某种安全的Python序列化器,如JSON是用于Javascript的。我知道Python有一个JSON模块,但我想更多的东西Python特定的,有阅读的元组的能力,也许设置,就像这样:无需求助于“EVAL”功能安全阅读Python文字
[ (3,7), (8,15), (17,21) ]
。
你可能想看看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'>
,或者看pyparsing
和http://pyparsing.wikispaces.com/Examples
谢谢,这样做! – dsign
Use Pickle module的parsePythonValue.py例子。从文档引用:
警告腌泡模块不是为了防止错误或恶意构建的数据。切勿取消从不可信或未经认证的来源收到的数据。
This article是非常好的实施一些安全性,同时unpickling(从序列化数据读取)。
如果您希望将数据序列化为二进制格式,那么您可以使用pickle。 如果你希望你的数据被序列化为文本格式,那么这个软件就不是。
如果缺少的唯一区别是列表和元组(也许集)之间,最好的办法可能是使用定制的json编码器/解码器。几个例子见http://docs.python.org/library/json.html。
你可能想看看'pickle'模块。它可以转储和加载从\到python的对象。 – slallum
[ast](http://docs.python.org/library/ast.html) – khachik