2

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

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

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

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

4

1 回答 1

4

使用ast.literal_eval

In [9]: import ast
In [10]: ast.literal_eval("[2,1,3,4]")
Out[10]: [2, 1, 3, 4]
于 2013-03-01T14:23:38.087 回答