在Python中将字符串转换为List

时间:2010-01-30 14:13:32

标签: python django string

我正在尝试根据我在网址中收到的参数创建一个列表。

例如我有:

 user.com/?users=0,1,2

现在,当我在请求中收到它时,它以字符串形式出现。我想列出“0,1,2”[0,1,2]

的列表

7 个答案:

答案 0 :(得分:31)

使用split方法。例如:

>>> "0,1,2".split(",")
['0', '1', '2']

甚至,

>>> [int(x) for x in "0,1,2".split(",")]
[0, 1, 2]

答案 1 :(得分:6)

这个问题最初被标记为Django,所以我会继续考虑这一点。

在view函数中,request对象具有GET属性,该属性是QueryDict的实例。如果你总是知道你将获得一个逗号分隔的关键“用户”整数列表,你可以在你的视图函数中做这样的事情:

users_list = request.GET('users', "").split(',')

这将为您提供字符串列表,如果GET中未提供“users”,则为空列表。如果你想要一个整数列表,你可以使用列表解析进一步处理它:

users_list = [int(x) for x in users_list]

答案 2 :(得分:3)

import ast
x=ast.literal_eval('0,1,2')
print(x)
# (0, 1, 2)

ast.literal_evaleval类似,但完全安全,因为它将字符串限制为字符串,数字,元组,列表,字母,布尔值和None等文字。

另一个尚未提及的替代方案是使用map

x=map(int,'0,1,2'.split(','))

答案 3 :(得分:2)

从“0,1,2”变为['0','1','2']只是"0,1,2".split(",")

因此,如果您将其保存在变量users中,那么users.split(",")会为您提供列表。

如果你需要它们作为整数而不是字符串,它将是[int(x) for x in users.split(',')]

答案 4 :(得分:2)

要将字符串转换为列表,请使用split

要将字符串列表转换为整数列表,请使用列表推导int

所以把它们放在一起,它看起来像这样:

s = '0,1,2'
l = [int(x) for x in s.split(',')]

结果:

[1, 2, 3]

答案 5 :(得分:0)

您可以使用以下代码:

s = 'user.com/?users=0,1,2'
s.rpartition('?users=')[2].split(',')

答案 6 :(得分:-2)

您有eval将字符串转换为“真实代码”:

示例:

>>> l = u"[('0','None'),('2','Taxable Goods'),('4','Shipping')]"
>>> type(l)
<type 'unicode'>

>>> t = eval(l)
>>> type(t)
<type 'list'>