2015-05-18 86 views
0

目前,每当我需要解析查询字符串的清洁解析,我本来做网址查询

from urllib import parse 

path = parse.urlparse(self.path) 
query = parse.parse_qs(path.query) 

value = query[name][0] 

,但我不喜欢[0] S周围我的代码点缀 - 它觉得错误一些难以确定的方式,所以我意识到我可以做

from urllib import parse 

path = parse.urlparse(self.path) 
query = dict(parse.parse_qsl(path.query)) 

value = query[name] 

这已移除[0]的优势,但它的风险丢弃多个值(这应该是罚款,我的应用程序,它不应该是接收mult反正值)。

是否有更简洁的解析urlencoded字符串的方式,它可以为您提供最小值的dict:值是否只有一个值,或者列表是否有多个?

这样做的功能不应该太困难,但我很好奇,如果有一个库这样做,所以我不需要重新发明轮子。

回答

2

一般来说,如果你有这样的字典query,你总是可以做

query = {[(k, v[0] if len(v) == 1 else v) for k, v in query.iteritems()]} 

不过,我真的不喜欢这个代码,因为它只是产生的东西,是不直观以后。

+0

'parse.parse_qs'返回一个dict,['parse.parse_qsl'返回一个'(key,value)'对的列表。](https://docs.python.org/3/library/urllib.parse .html#urllib.parse.parse_qsl) – RoadieRich

+0

啊,我最后错过了''l''不是拼写错误。将编辑。 –