将string-tuple转换为元组

时间:2016-12-14 19:42:09

标签: python string tuples type-conversion

我的输入文件包含以下格式

[(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",)]

1 个答案:

答案 0 :(得分:4)

您可以将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

  

安全地评估表达式节点或包含Python文字或容器显示的Unicode或Latin-1编码字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None。