2

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

>>> 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'>

有没有办法将 list_string 转换回二维列表?基本上,是否有将其转换回其原始形式的功能?

old_list = magic_conversion_func(list_string)

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

我试过 list() 但这会将字符串中的每个字符转换为一个新的列表元素。

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

那不是我想要的

4

2 回答 2

3

使用ast.literal_eval

>>> list_string = '[[1, 1], [2, 2], [3, 3]]'
>>> import ast
>>> type(ast.literal_eval(list_string))
<type 'list'>
于 2013-11-01T09:23:51.373 回答
1

使用eval

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

eval应该谨慎使用,对吧?一个关于eval安全的话题。

这也有效,接近您尝试过的内容list

import numpy as np
print np.array(list_string)
于 2013-11-01T10:05:00.183 回答