将字符串2d列表转换回python中的2d列表

convert a string 2d list back to 2d list in python

本问题已经有最佳答案,请猛点这里访问。

我刚开始玩Python。我知道我们可以使用str()将任何列表转换为字符串像:

1
2
3
4
5
6
7
8
9
10
11
12
>>> l = [[1,1] , [2,2] , [3,3]]
>>> l
[[1, 1], [2, 2], [3, 3]]
>>> type(l)
<type 'list'>
>>> str(l)
'[[1, 1], [2, 2], [3, 3]]'
>>> list_string = str(l)
>>> list_string
'[[1, 1], [2, 2], [3, 3]]'
>>> type(list_string)
<type 'str'>

有没有办法把列表字符串转换回二维列表??基本上,是否有一个函数可以将其转换回原始形式?

1
2
3
4
old_list = magic_conversion_func(list_string)

>>>old_list
[[1, 1], [2, 2], [3, 3]]

我尝试了list(),但它将字符串中的每个字符转换为一个新的list元素。

1
2
>>> list(list_string)
['[', '[', '1', ',', ' ', '1', ']', ',', ' ', '[', '2', ',', ' ', '2', ']', ',', ' ', '[', '3', ',', ' ', '3', ']', ']']

那不是我想要的


使用ast.literal评估

1
2
3
4
>>> list_string = '[[1, 1], [2, 2], [3, 3]]'
>>> import ast
>>> type(ast.literal_eval(list_string))
<type 'list'>


使用eval

1
2
3
4
>>> l = [[1,1] , [2,2] , [3,3]]
>>> list_string = str(l)
>>> eval(list_string)
[[1, 1], [2, 2], [3, 3]]

但是使用eval时要小心,对吗?eval安全螺纹。

这也同样有效,与您对list的尝试很接近:

1
2
import numpy as np
print np.array(list_string)