2013-03-01 70 views
2

我面臨一個「eval」問題,我想請教你,我知道eval是錯誤的,我希望避免它,但我不知道如何...如何避免EVAL的Python爲字符串轉換?

我有一些python對象存儲在數據庫中,它們被存儲爲字符串,我將其轉化爲與EVAL實際對象。舉個例子,我的對象可能是一些簡單的字符串,如「[2,1,3,4]」或「[無,無],無]」 - 它們對應於不同類型的對象,他們不遵守一個共同的模式。我必須像現在一樣將它們存儲爲人類可讀的對象。

我的問題是如何避免這種情況的eval?我不想爲每個對象編寫解析器。

如果我必須使用eval,我怎麼收拾這些字符串,讓他們不要做任何討厭?

+2

在哪裏這些字符串是從哪裏來的?你有沒有考慮用'pickle'或'json'來創建它們? – geoffspear 2013-03-01 14:23:34

回答

4

使用ast.literal_eval

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

非常好,謝謝! – user2123838 2013-03-01 14:24:06

相關問題