2012-09-10 67 views
1

简而言之,我想知道是否存在某种安全的Python序列化器,如JSON是用于Javascript的。我知道Python有一个JSON模块,但我想更多的东西Python特定的,有阅读的元组的能力,也许设置,就像这样:无需求助于“EVAL”功能安全阅读Python文字

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

+0

你可能想看看'pickle'模块。它可以转储和加载从\到python的对象。 – slallum

+0

[ast](http://docs.python.org/library/ast.html) – khachik

回答

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'> 

,或者看pyparsinghttp://pyparsing.wikispaces.com/Examples

+0

谢谢,这样做! – dsign

0

Use Pickle module的parsePythonValue.py例子。从文档引用:

警告腌泡模块不是为了防止错误或恶意构建的数据。切勿取消从不可信或未经认证的来源收到的数据。

This article是非常好的实施一些安全性,同时unpickling(从序列化数据读取)。

0

如果您希望将数据序列化为二进制格式,那么您可以使用pickle。 如果你希望你的数据被序列化为文本格式,那么这个软件就不是。

如果缺少的唯一区别是列表和元组(也许集)之间,最好的办法可能是使用定制的json编码器/解码器。几个例子见http://docs.python.org/library/json.html