分享
三行代码  ›  专栏  ›  技术社区  ›  Mike Rs.

如何将包含列表的字符串强制转换为<class'list'> - How to cast a string that contains a list to <Class 'List'>

  •  0
  • Mike Rs.  · 技术社区  · 1 周前

    我在将variblefoo(str)中的数据转换为python v3.7.2中的list对象时遇到问题,有什么简单的方法可以做到吗?

    foo = "[{'ID': 6622, 'Status': 'Invoice processed'}]"
    type(foo) # str
    
    2 回复  |  直到 1 周前
        1
  •  3
  •   Kevin Welch    1 周前

    eval(foo) literal_eval 是按照另一个答案中建议的最灵活的方法。

    另一种方法是,如果字符串是有效的json,则使用 json.loads(foo) ,但要求字符串是有效的json(键名周围使用双引号)

    import json
    foo = '[{"ID": 6622, "Status": "Invoice processed"}]'
    bar = json.loads(foo)
    # bar == [{"ID": 6622, "Status": "Invoice processed"}]
    

    然后可以将其转换回字符串:

    import json
    foo = [{"ID": 6622, "Status": "Invoice processed"}]
    bar = json.dumps(foo)
    # bar == '[{"ID": 6622, "Status": "Invoice processed"}]'
    
        2
  •  0
  •   John Gordon    1 周前

    使用 ast.literal_eval() .

    foo = literal_eval("[{'ID': 6622, 'Status': 'Invoice processed'}]")