2016-12-14 75 views
2

我有一個輸入文件具有以下格式轉換字符串元組的元組

[(1,1),(2,1)], 'add', 11 
[(1,2),(1,3)], 'div', 2 
[(3,1),(4,1),(3,2),(4,2)], 'times', 240 
[(2,2),(2,3)], 'minus', 3 
      . 
      . 

每一行是一個元組,我想創建。如何將每個字符串行轉換爲一個元組。

對於例如

line: string "[(1,1),(2,1)], 'add', 11" ---------> tuple: [ [(1,1),(2,1)], 'add', 11] 

到目前爲止,我想:

tuples = [] 
for line in file: 
    tuples.append((line,)) 

但我得到一個字符串皈依

[("[(1,1),(2,1)], 'add', 11\n",), ("[(1,2),(1,3)], 'div', 2\n",), ("[(3,1),(4,1),(3,2),(4,2)], 'times', 240\n",), ("[(2,2),(2,3)], 'minus', 3",)] 

回答

3

您可以使用ast.literal_eval爲:

>>> import ast 
>>> my_string = "[(1,1),(2,1)], 'add', 11" 

>>> ast.literal_eval(my_string) 
([(1, 1), (2, 1)], 'add', 11) 

作爲每ast.literal_eval(node_or_string) document

安全評估的表達式節點或Unicode或含有一個Python字面或容器顯示Latin-1的編碼的字符串。提供的字符串或節點可能只包含以下Python文字結構:字符串,數字,元組,列表,字典,布爾值和無。

+1

打我吧:) – brianpck