【问题标题】:Convert string-tuple to a tuple将字符串元组转换为元组
【发布时间】:2017-04-30 06:29:39
【问题描述】:

我有一个格式如下的输入文件:

[(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
...

每一行都是我要创建的元组。如何将每个字符串行转换为元组?

例如,string "[(1,1),(2,1)], 'add', 11" 行应转换为元组:([(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",)]

【问题讨论】:

    标签: python string tuples type-conversion


    【解决方案1】:

    您可以将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 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 2014-09-21
      • 2012-01-19
      • 1970-01-01
      • 2017-06-27
      相关资源
      最近更新 更多