2013-06-01 72 views
1

我要創建一個字符串的文件這樣的基質(或陣列)創建矩陣:Python從字符串

>>>print Qval 
[1*10**4,0,0,0],[0,1,0,0],[0,0,1*10**3,0], [0,0,0,1] 
>>>print type(Qval) 
<type 'str'> 

我必須得到矩陣這種方式,因爲在我Tkinter的GUI我必須輸入像這樣的值(部分接口:字段標籤=默認值):

Q-Matrix = [1 * 10 ** 4,0,0,0],[0,1,0, 0],[0,0,1 * 10 ** 3,0],[0,0,0,1]

我從我的界面上獲取Qval字符串,如下所示:

Qval=vars[13].get() 

有沒有適當的方法來做到這一點?

謝謝。

回答

6
>>> ast.literal_eval('[1e4, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1e3, 0], [0, 0, 0, 1]') 
([10000.0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1000.0, 0], [0, 0, 0, 1]) 
+0

完美的作品,非常感謝你! – Baekel

0

你可以使用內置函數eval這樣的:

a ="[1*10**4,0,0,0],[0,1,0,0],[0,0,1*10**3,0], [0,0,0,1]" 
mat = eval(a) 
+1

'ast.literal_eval()'更安全。 –