2016-05-31 12 views
0

Pythonの入力に[[1,2,3],[2,3,4]]形態Pythonのアレイ状の入力

整数フォーム1 2 3 2 3 4

を好きではないが、あなたが入力コード

input =[] 
inputfunc() //get input array 
print input 

で[]

を有しています

[[1,2,3],[2,3,4]] 

Pythonの結果は

[[1,2,3],[2,3,4]] 

を出力しますので、私は、この変数を保存することができますか?または私は文字列の解析を使用する必要がありますか?

+0

'input = []':組み込みの名前を変数名として使用しないとよいでしょう。 – polku

答えて

2

次のような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]] 
>>> 

抽象構文木の略astliteral_eval()は、eval()よりはるかに安全です。公式ドキュメントから引用

ast.literal_eval(node_or_string)は安全発現ノードまたは Pythonのリテラルまたは コンテナ表示を含むUnicodeまたはLatin-1のエンコードされた文字列を評価します。提供される文字列またはノードは、文字列、数字、タプル、リスト、 dicts、ブール値、およびNoneというPythonリテラル構造に続く のみで構成されます。

これは、 の値を解析する必要なく、信頼できないソースからのPython 値を含む文字列を安全に評価するために使用できます。演算子や索引付けなど、任意の複雑な式 の式を評価することはできません。