如何将列表的字符串表示形式转换为列表

新手上路,请多包涵

我想知道最简单的方法是将如下列表的字符串表示形式转换为 list

 x = '[ "A","B","C" , " D"]'

即使在用户在逗号之间放置空格和引号内放置空格的情况下,我也需要处理它并将其转换为:

 x = ["A", "B", "C", "D"]

我知道我可以用 strip()split() 去除空格并检查非字母字符。但是代码变得非常笨拙。有我不知道的快速功能吗?

原文由 harijay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 470
2 个回答
>>> import ast
>>> x = '[ "A","B","C" , " D"]'
>>> x = ast.literal_eval(x)
>>> x
['A', 'B', 'C', ' D']
>>> x = [n.strip() for n in x]
>>> x
['A', 'B', 'C', 'D']

ast.literal_eval

使用 ast.literal_eval 您可以安全地评估表达式节点或包含 Python 文字或容器显示的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、字节、数字、元组、列表、字典、布尔值和 None

原文由 Roger Pate 发布,翻译遵循 CC BY-SA 4.0 许可协议

只要有字典的 字符串化 列表, json 模块就是更好的解决方案。 json.loads(your_data) 函数可用于将其转换为列表。

 >>> import json
>>> x = '[ "A","B","C" , " D"]'
>>> json.loads(x)
['A', 'B', 'C', ' D']

相似地

>>> x = '[ "A","B","C" , {"D":"E"}]'
>>> json.loads(x)
['A', 'B', 'C', {'D': 'E'}]

原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题