【问题标题】:How do I properly convert a string to a list如何正确地将字符串转换为列表
【发布时间】:2020-11-01 19:33:10
【问题描述】:

我有一个函数将消息作为字符串返回,如下所示:

 l = ['["sure","kkk"]', '["sure","ii"]']

我试图通过迭代删除"'" 字符,但它对我不起作用。 这是我的代码:

print([item.replace('\'["','"').replace('"]\'','"') for item in l])

有没有更好的方法来做到这一点,因为我想要这样的结果:

l = [["sure","kkk"], ["sure","ii"]]

【问题讨论】:

    标签: python-3.x string list


    【解决方案1】:

    或者,您也可以使用ast.literal_eval(参见the docs),如下所示:

    import ast
    
    l = ['["sure","kkk"]', '["sure","ii"]']
    l = [ast.literal_eval(s) for s in l]
    print(l)  # [['sure', 'kkk'], ['sure', 'ii']]
    

    【讨论】:

      【解决方案2】:

      这些是 JSON 编码的字符串,因此您应该使用 json API,而不是尝试“自己”解析它:

      import json
      
      l = ['["sure","kkk"]', '["sure","ii"]']
      l = [json.loads(s) for s in l]
      print(l)  # [['sure', 'kkk'], ['sure', 'ii']]
      

      也可以用map代替列表理解来实现:

      l = list(map(json.loads, l))
      

      【讨论】:

      • 我看到您最终将接受标志更改为 literal_eval 答案。如果这是您需要的,而不是 JSON 解析,那么最好详细说明用例:您是否从系统到系统的通信中获取值?它们来自用户输入吗? JSON 的优点在于它具有高度的可移植性,并且 loads method is significantly faster than literal_eval.
      • 谢谢。我会看看细节。亲切的问候。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      • 1970-01-01
      • 2021-02-11
      • 2023-04-06
      相关资源
      最近更新 更多