2017-10-24 19 views
0

私のような文字列があります。文字列の中、このような辞書の任意の数があるかもしれません文字列をPythonリストと辞書に変換しますか?

[{'P_Key': 'val1', 'Price': '3.95'}, 
{'P_Key': 'val2', 'Price': '2.2'}, 
{'P_Key': 'val3', 'Price': '0.4'}] 

"[{'P_Key': 'val1', 'Price': '3.95'}, {'P_Key': 'val2', 'Price': '2.2'}, {'P_Key': 'val3', 'Price': '0.4'}]" 

は、私のような辞書のリストにこれを変換したいです。

答えて

5

使用ast.literal_eval

これは、それが唯一の有効なPythonのデータ型

s = "[{'P_Key': 'val1', 'Price': '3.95'}, {'P_Key': 'val2', 'Price': '2.2'}, {'P_Key': 'val3', 'Price': '0.4'}]" 
import ast 
ast.literal_eval(s) 
# [{'P_Key': 'val1', 'Price': '3.95'}, {'P_Key': 'val2', 'Price': '2.2'}, {'P_Key': 'val3', 'Price': '0.4'}] 
0

使用eval

eval("[{'P_Key': 'val1', 'Price': '3.95'}, {'P_Key': 'val2', 'Price': '2.2'}, {'P_Key': 'val3', 'Price': '0.4'}]") 
+3

を評価するようevalと比較する方が安全ですが、 'eval'は危険です。 –

+0

@ Ev.Kounis regexを介して検証した後、常に引数をevalに渡します(簡単に言ったより簡単です)? –

+1

よりもはるかに簡単ですが、もう一度 'ast.literal_eval' –

関連する問題