我遇到了“eval”问题,我想要你的建议,我知道eval是错的,我希望避免它,但我不知道如何......
我有一些python对象存储在数据库中,它们存储为字符串,我将它们转换为带有eval的实际对象。作为一个例子,我的对象可能是一些简单的字符串,如“[2,1,3,4]”或“[[None,None],None]” - 它们对应不同类型的对象,它们不遵循一种常见的模式。我必须将它们存储为人类可读的对象。
我的问题是在这种情况下如何避免eval?我不想为每个对象编写解析器。
如果我必须使用eval,我该如何清理这些字符串以便它们不会做任何令人讨厌的事情?
答案 0 :(得分:4)
In [9]: import ast
In [10]: ast.literal_eval("[2,1,3,4]")
Out[10]: [2, 1, 3, 4]