如何避免python中的eval进行字符串转换?

时间:2013-03-01 14:22:28

标签: python eval

我遇到了“eval”问题,我想要你的建议,我知道eval是错的,我希望避免它,但我不知道如何......

我有一些python对象存储在数据库中,它们存储为字符串,我将它们转换为带有eval的实际对象。作为一个例子,我的对象可能是一些简单的字符串,如“[2,1,3,4]”或“[[None,None],None]” - 它们对应不同类型的对象,它们不遵循一种常见的模式。我必须将它们存储为人类可读的对象。

我的问题是在这种情况下如何避免eval?我不想为每个对象编写解析器。

如果我必须使用eval,我该如何清理这些字符串以便它们不会做任何令人讨厌的事情?

1 个答案:

答案 0 :(得分:4)

使用ast.literal_eval

In [9]: import ast
In [10]: ast.literal_eval("[2,1,3,4]")
Out[10]: [2, 1, 3, 4]