将列表的字符串表示转换为列表

时间:2017-06-21 09:46:59

标签: python string list

list_string = "[1,3,4,6]"

我尝试list_string[1:-1],但它正在给1,3,4,6。 我也尝试了list_string.split(',')但是括号将再次附加到第一个和最后一个元素,即'[1' , '3' , '4' , '6]'

我可以迭代所有项目并从第一个和最后一个元素中删除括号。 但是,最好和最简单的方法是什么?

1 个答案:

答案 0 :(得分:3)

假设您的字符串是一个简单的列表/字典/列表和字母组合,您可以使用下面提到的两个包中的一个,按优先顺序列出。

json

>>> import json
>>> json.loads('[1, 2, 3]')
[1, 2, 3]

如果要解析原始json字符串,这绝对是首选方法。

ast.literal_eval

>>> import ast
>>> ast.literal_eval('[1, 2, 3]')
[1, 2, 3]

ast.literal_eval将安全地评估表达式节点或包含Python文字或容器显示的字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,字节,数字,元组,列表,字符串,集合,布尔值,无,字节和集合。

另外json.loads is significantly faster than ast.literal_eval。如果您不能先​​使用json模块,请使用此选项。

yaml

在某些情况下,您还可以使用pyYAML库(您需要先使用PyPi进行安装)。

>>> import yaml
>>> yaml.safe_load('[1, 2, 3]')
[1, 3, 4, 6]