【问题标题】:Convert list of tuple string to list of tuple object in python将元组字符串列表转换为python中的元组对象列表
【发布时间】:2022-11-21 19:18:47
【问题描述】:

我有如下字符串:

[(.1, apple), (.2, orange), (.3, banana), (.4, jack), (.5, grape), (.6, mango)]

我需要将上面的字符串转换为 python 中的对象,如下所示:

[('.1', 'apple'), ('.2', 'orange'), ('.3', 'banana'), ('.4', 'jack'), ('.5', 'grape'), ('.6', 'mango')]

有没有任何有效的方法可以通过使用正则表达式或任何其他方式来转换它?

提前致谢

【问题讨论】:

  • NameError:未定义名称“苹果”。使用 eval @LucasM.Uriarte 时出现这样的错误
  • @preRexx 你是对的

标签: python string list


【解决方案1】:

您可以执行以下操作

import re

string = """[(.1, apple), (.2, orange), (.3, banana), (.4, jack), (.5, grape), (.6, mango)]"""
values = [tuple(ele.split(',')) for ele in re.findall(".d, w+", string)]

这输出

print(values)
>>> [('.1', ' apple'), ('.2', ' orange'), ('.3', ' banana'), ('.4', ' jack'), ('.5', ' grape'), ('.6', ' mango')]

【讨论】:

    【解决方案2】:
    from re import sub
    
    
    str = "[(.1, apple), (.2, orange), (.3, banana), (.4, jack), (.5, grape), (.6, mango)]"
    sub(r"(([.0-9]*), ([a-z]*)", r"('', ''", str)
    

    用于重新应用找到的组

    【讨论】:

      【解决方案3】:

      使用ast.literal_eval,我们可以尝试先将您的字符串转换为有效的 Python 列表,然后再转换为对象:

      import ast
      import re
      
      inp =  "[(.1, apple), (.2, orange), (.3, banana), (.4, jack), (.5, grape), (.6, mango)]"
      inp = re.sub(r'([A-Za-z]+)', r"''", inp)
      object = ast.literal_eval(inp)
      print(object)
      

      这打印:

      [(0.1, 'apple'), (0.2, 'orange'), (0.3, 'banana'), (0.4, 'jack'), (0.5, 'grape'), (0.6, 'mango')]
      

      【讨论】:

        猜你喜欢
        • 2014-07-14
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 2011-03-18
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多