在Python中将字符串转换为列表
我正在尝试从我在网址中收到的参数创建一个列表。
比如我有:
user.com/?users=0,1,2
现在当我在请求中收到这个参数时,它是以字符串的形式出现的。我想把"0,1,2"变成一个列表,也就是[0,1,2]。
7 个回答
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(','))
7
这个问题最开始是和Django有关的,所以我会围绕这个来讲。
在你的视图函数里,request
对象有一个叫做GET的属性,它是一个QueryDict的实例。如果你总是知道会收到一个用逗号分隔的整数列表,键名是"users",你可以在视图函数里这样做:
users_list = request.GET('users', "").split(',')
这样你就能得到一个字符串列表,如果GET请求中没有提供"users",那么你会得到一个空列表。如果你想要一个整数列表,可以进一步处理一下,使用列表推导式:
users_list = [int(x) for x in users_list]
31
使用 split
方法。举个例子:
>>> "0,1,2".split(",")
['0', '1', '2']
或者,你也可以这样做:
>>> [int(x) for x in "0,1,2".split(",")]
[0, 1, 2]