目前,每当我需要解析查询字符串时,我最初做的是
from urllib import parse
path = parse.urlparse(self.path)
query = parse.parse_qs(path.query)
value = query[name][0]
但是我不喜欢在我的代码中点缀[0]
-它感觉是错误的以某种难以确定的方式,所以我意识到我可以做
from urllib import parse
path = parse.urlparse(self.path)
query = dict(parse.parse_qsl(path.query))
value = query[name]
这样做的优点是删除了[0]
,但它有丢弃多个值的风险(这对于我的应用程序来说应该是好的,因为它不应该接收多个值)。
是否有一种更清晰的解析urlencoded字符串的方法,它给你一个最小值的dict
:值,如果只有一个值,或一个列表,如果有多个?
这样做的函数应该不会太难,但我很好奇是否有一个库可以做到这一点,所以我不需要重新发明轮子。
一般来说,如果您有这样一个字典query
,您总是可以执行
query = {[(k, v[0] if len(v) == 1 else v) for k, v in query.iteritems()]}
然而,我真的不喜欢这段代码,因为它只会产生一些不直观的东西。