如何将列表的字符串转换回python中的列表?

时间:2014-10-21 11:19:27

标签: python string list

所以我有一个实际上是一个列表的字符串,例如:

a = "[['hey', '4A48'], ['hello', '4D42']]"

我希望将其转换回列表。

我希望我的输出是这样的:

a = [['hey', '4A48'], ['hello', '4D42']]

因此它是一个实际的列表而不是字符串。

3 个答案:

答案 0 :(得分:6)

您可以使用ast模块解析字符串:

>>> import ast
>>> thestring = "[['hey', '4A48'], ['hello', '4D42']]"
>>> thelist = ast.literal_eval(thestring)
>>> print(thelist)
[['hey', '4A48'], ['hello', '4D42']]
>>> type(thelist)
<class 'list'>
>>> print(thelist[0])
['hey', '4A48']
>>> type(thelist[0])
<class 'list'>

和(在这个简单的例子中)通过repr返回字符串:

>>> repr(thelist)
"[['hey', '4A48'], ['hello', '4D42']]"
>>> repr(thelist) == thestring
True

eval也可以,但会在字符串中执行任何python代码,这可能存在安全风险或可能产生不必要的副作用。 使用ast.literal_eval更安全,即使在可信输入上也是如此。

答案 1 :(得分:0)

你可以使用eval作为

>>> a = "[['hey', '4A48'], ['hello', '4D42']]"
>>> l=eval(a)
>>> l[0]
['hey', '4A48']
>>> type(l)
list

进行比较:

>>> timeit(ast.literal_eval(a))
100000 loops, best of 3: 15.6 µs per loop

>>> timeit(eval(a))
100000 loops, best of 3: 9.72 µs per loop

答案 2 :(得分:0)

如果您控制输入或确保没有人从事任何猴子业务,您可以使用eval

  

表达式参数被解析并作为Python表达式进行评估(从技术上讲,条件列表)

示例(您必须将代码作为字符串传递):

result = eval("[['hey', '4A48'], ['hello', '4D42']]")

result将是您的列表清单。