如何将列表转换为字符串,并将此字符串转换回初始列表?

时间:2014-12-12 10:55:10

标签: python string list

我对Python有以下问题,我想知道是否有直接的方法来处理它(使用我不知道的特定功能等)。

我有一个包含不同类型输入的列表(整数,字符串等)。我使用str()函数将列表转换为字符串。现在变量的类型是一个字符串。我用这个字符串做了一些处理,然后我想用最初的变量类型(整数,字符串等)将字符串转换回初始列表。

以下是插图:

             list = [1,'house',3]
             print(type(list))  # gives <class list>
             print(type(list[0])) # gives <type int>
             print(type(list[1])) # gives <type str>

             string = str(list)
             print(type(string)) # gives <type string>
             ... # use this string to process data


            # convert the string into the initial list
             ? ?

我想也许我可以在开始时迭代我的列表并将其属性的类型存储在列表中(list_b)。稍后当我将字符串转换为列表时,我将爆炸字符串并将字符串转换为与list_b对应的变量类型。

我想知道是否有比这更直接的方式?

2 个答案:

答案 0 :(得分:5)

您可以使用ast.literal_eval将字符串转换为Python对象。

from ast import literal_eval

s = "[1, 'house', 3]"
l = literal_eval(s)
print(l)
# [1, 'house', 3]

请注意,根据上面链接的文档,字符串只能由字符串,字节,数字,元组,列表,dicts,集合,布尔值和None组成。

答案 1 :(得分:2)

对于Python&#39; json&#39;这似乎是一个很好的用例。模块,因为它可以将列表和字典转换为JSON(字符串格式),反之亦然。

例如:

import json
x = [1,2,3]
y = json.dumps(x) # => '[1, 2, 3]'
z = json.loads(y) # => [1,2,3]

这仅适用于简单的数据结构(dict,list,tuple,str,int,long,float,boolean和None)(有关此here的更多信息)

如果您的列表中包含您想要进行序列化的其他类型的对象,则可以查看this个答案。