我正在尝试根据我在网址中收到的参数创建一个列表。
例如我有:
user.com/?users=0,1,2
现在,当我在请求中收到它时,它以字符串形式出现。我想列出“0,1,2”[0,1,2]
的列表答案 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_eval
与eval
类似,但完全安全,因为它将字符串限制为字符串,数字,元组,列表,字母,布尔值和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'>