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 に答える