2012-03-10 187 views
0

如何將字典輸入轉換爲可以處理的真字典?將字典輸入轉換爲字典

當我執行外部命令時,這就是我所得到的。

{'aaa': {'test_a': 0.11666666666667, 
     'test_b': 1, 
     'total_c': 0.11666666666667}, 
'bbb': {'test_a': 32.883333333332999, 
     'test_b': 1, 
     'total_c': 0.11666666666667}, 
'ccc': {'test_a': 11, 'test_b': 31, 'test'_c': 33}} 

因此,正如你所看到的,上面已經是字典格式了。我只是在想做類似的事情。

#!/usr/bin/python 

import command 
result = commands.getoutput('<execute_external_command') 

因此'結果'變成了字典,我可以像任何字典一樣處理它。

+2

這是來自API嗎?正如Lavrton的答案所指出的那樣,這可能是JSON,這在技術上與Python字典不太一樣,如果您使用eval,可能會讓您陷入麻煩(例如,它使用小寫'true'和'false',而Python使用大寫)。所以最好的解決方案是Lavrtons – 2012-03-10 03:25:19

+0

http://docs.python.org/library/json.html文檔是一個很好的閱讀。 – cjm 2012-03-10 04:15:16

+0

'eval' **會**「讓你陷入麻煩」。這是一個公然的安全漏洞。使用'ast.literal_eval'。 – 2012-03-10 04:38:32

回答

1
>>> ast.literal_eval("""{'aaa': {'test_a': 0.11666666666667, 
...   'test_b': 1, 
...   'total_c': 0.11666666666667}, 
... 'bbb': {'test_a': 32.883333333332999, 
...   'test_b': 1, 
...   'total_c': 0.11666666666667}, 
... 'ccc': {'test_a': 11, 'test_b': 31, 'test_c': 33}}""") 
{'aaa': {'total_c': 0.11666666666667, 'test_b': 1, 'test_a': 0.11666666666667}, 'bbb': {'total_c': 0.11666666666667, 'test_b': 1, 'test_a': 32.883333333333}, 'ccc': {'test_c': 33, 'test_b': 31, 'test_a': 11}} 
4
from simplejson import loads 
result='{"name":"Anton"}' 
dictionary=loads(result) 
print dictionary 

result="{'name':'Anton'}" 
dictionary=loads(result.replace("'",'"')) 
print dictionary