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

Python 将列表的字符串表示形式转换为列表,python,string,list,Python,String,List,我尝试了list\u字符串[1:-1],但它给出了1,3,4,6。 我还尝试了list_string.split(','),但括号将再次附加到第一个和最后一个元素,即'[1','3','4','6]' 我可以遍历所有项目,并从第一个和最后一个元素中删除括号。 但是什么是最好的简单方法呢?假设您的字符串是一个简单的列表/dict/列表和dict的组合,您可以使用下面提到的两个包中的一个,按优先顺序列出 json 如果您正在解析原始json字符串,那么这绝对是首选方法 ast.literal\u

我尝试了
list\u字符串[1:-1]
,但它给出了
1,3,4,6
。 我还尝试了
list_string.split(',')
,但括号将再次附加到第一个和最后一个元素,即
'[1','3','4','6]'

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

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

json
如果您正在解析原始json字符串,那么这绝对是首选方法


ast.literal\u eval
ast.literal\u eval
将安全地计算表达式节点或包含Python文本或容器显示的字符串。提供的字符串或节点只能由以下Python文本结构组成:字符串、字节、数字、元组、列表、dicts、set、booleans、None、bytes和set

还有。仅当无法首先使用
json
模块时,才使用此选项


yaml
在某些情况下,您还可以使用pyYAML库(首先需要使用PyPi来安装它)


这可能是JSON吗?然后使用
json.loads()
。它将取决于其他因素,但如果它可以被视为JSON;例如,如果存在非数值,例如
null
false
true
或字符串。换句话说,请提供有关此数据来源的更多上下文。如果您在Python对象上使用
str()
repr()
,您可以使用
ast.literal_eval()
,但也许您首先应该尝试避免执行第一步。如果不是JSON,您可以结合您的方法-
列出字符串[1:-1]。拆分(',')
请详细说明何时使用哪一种方法
ast.literal\u eval()
速度较慢,两种方法之间存在巨大差异。@MartijnPieters我只知道json经过优化以解析json字符串,而literal\u eval使用类似解析树的方法来计算字符串。我说得对吗?将链接到docs.JSON语法与Python语法有很大不同。对于这个例子,JSON和Python语法是相同的,这是运气,而不是设计。当输入由比数字列表更复杂的内容组成时,这两个函数的行为将完全不同。OP没有给我们提供任何依据,但是在这个问题上跌跌撞撞的未来访问者可能会尝试一种或另一种方法,而不会注意到当他们的输出由(比如)带有unicode转义序列的字符串组成时,他们破坏了某些东西。
list_string = "[1,3,4,6]"
>>> import json
>>> json.loads('[1, 2, 3]')
[1, 2, 3]
>>> import ast
>>> ast.literal_eval('[1, 2, 3]')
[1, 2, 3]
>>> import yaml
>>> yaml.safe_load('[1, 2, 3]')
[1, 3, 4, 6]