次のようなPythonオブジェクトにその文字列を変換するためにast.literal_eval()
を使用することができます。
>>> import ast
>>> ast.literal_eval('[[1,2,3],[2,3,4]]')
[[1, 2, 3], [2, 3, 4]]
>>> L=ast.literal_eval('[[1,2,3],[2,3,4]]')
>>> type(L)
<class 'list'>
>>> L
[[1, 2, 3], [2, 3, 4]]
>>>
抽象構文木の略ast
。 literal_eval()
は、eval()
よりはるかに安全です。公式ドキュメントから引用
:
ast.literal_eval(node_or_string)は安全発現ノードまたは Pythonのリテラルまたは コンテナ表示を含むUnicodeまたはLatin-1のエンコードされた文字列を評価します。提供される文字列またはノードは、文字列、数字、タプル、リスト、 dicts、ブール値、およびNoneというPythonリテラル構造に続く のみで構成されます。
これは、 の値を解析する必要なく、信頼できないソースからのPython 値を含む文字列を安全に評価するために使用できます。演算子や索引付けなど、任意の複雑な式 の式を評価することはできません。
'input = []':組み込みの名前を変数名として使用しないとよいでしょう。 – polku