我将尝试从我在URL中接收到的参数创建一个列表。
例如,我有:
例如,我有:
user.com/?users=0,1,2
现在当我在请求中接收到它时,它是一个字符串。我想把"0,1,2"变成一个列表 [0,1,2]。
split
方法。例如:>>> "0,1,2".split(",")
['0', '1', '2']
或者,
>>> [int(x) for x in "0,1,2".split(",")]
[0, 1, 2]
这个问题最初被标记为Django,所以我会考虑这一点。
在您的视图函数中,request
对象有一个GET属性,它是QueryDict的实例。如果您总是知道您将获得一个以逗号分隔的整数列表作为键“users”,那么您可以在视图函数中执行以下操作:
users_list = request.GET('users', "").split(',')
这将为您提供一个字符串列表,如果在GET中没有提供“users”,则为空列表。如果您想要一个整数列表,可以使用列表推导式进一步处理:
users_list = [int(x) for x in users_list]
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(','))
使用 split
将字符串转换为列表。
使用带有 int
的列表推导式将字符串列表转换为整数列表。
将所有内容组合起来,看起来像这样:
s = '0,1,2'
l = [int(x) for x in s.split(',')]
结果:
[1, 2, 3]
要将“0,1,2”转换为['0','1','2'],只需使用"0,1,2".split(",")
。
所以如果你把它存在一个变量users
中,那么users.split(",")
将会给你这个列表。
如果你需要将它们作为整数而不是字符串,那么可以使用[int(x) for x in users.split(',')]
。
s = 'user.com/?users=0,1,2'
s.rpartition('?users=')[2].split(',')
>>> l = u"[('0','None'),('2','Taxable Goods'),('4','Shipping')]"
>>> type(l)
<type 'unicode'>
>>> t = eval(l)
>>> type(t)
<type 'list'>