2015-05-18 122 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''不是拼寫錯誤。將編輯。 –