从python中的原始列表对象的字符串表示转换为/获取原始列表对象

时间:2016-09-21 12:31:45

标签: python

我想将任意列表的字符串表示形式转换回类似原始的列表对象,如下面的代码所示:

list1 = [1,2,3,4]
list1str = str(list1) 
str2list1 = list1str[1:-1].split(",") #stripping off square brackets from [1,2,3,4] and then splitting
print(list1)      #[1,2,3,4]
print(str(list1)) #[1,2,3,4]
print(str2list1)  #['1', ' 2', ' 3', ' 4']    
                  #Notice that the elements are of string types. 
                  #Also there is a prefix empty space in ' 2' (and also in ' 3' and ' 4')
                  # --> I will like str2list1 to be ['1', ' 2', ' 3', ' 4']

此外,如果我们处理嵌套列表:

list2 = [1,2,['a','b'],4]
list2str = str(list2)
str2list2 = list2str[1:-1].split(",")
print(list2)      #[1, 2, ['a', 'b'], 4]
print(str(list2)) #[1, 2, ['a', 'b'], 4]
print(str2list2)  #['1', ' 2', " ['a'", " 'b']", ' 4']
                  # --> I will like str2list2 to be [1, 2, ['a', 'b'], 4]

如何从字符串表示中获取原始列表?

2 个答案:

答案 0 :(得分:4)

您可以尝试:

>>> import ast
>>> ast.literal_eval("[1,2,['a','b'],4]")
[1, 2, ['a', 'b'], 4]

答案 1 :(得分:1)

最简单的方法,使用 eval()

aclDetailsFetching.setDQL(fetchAclsInfoQuery);

所以newlst将是你想要的确切python列表

lst = "[1, 2, 3, 4, ['a', 'b'], 5, 6]"
newlst = eval(lst)

还有一种方法可以用 exec()做你想做的事:

print (newlst)
# [1, 2, 3, 4, ['a', 'b'], 5, 6]

exec实际上会将字符串视为python命令/语法。