【发布时间】:2017-05-20 12:14:18
【问题描述】:
Python3 的 urllib.parse.parse_qs 奇怪地为查询字符串返回了 string, list<string> 的字典:
>>> import urllib.parse as p
>>> url = p.urlparse("http://exam.ple/path?query=string&yes=no")
ParseResult(scheme='http', netloc='exam.ple', path='/path', params='', query='query=string&yes=no', fragment='')
>>> p.parse_qs(url.query)
{'query': ['string'], 'yes': ['no']}
函数的documentation 表示:
字典键是唯一的查询变量名称,值是每个名称的值列表。
我能否以某种方式利用这种“值列表”功能?
Wikipedia、Stack Overflow 和 the IETF specification 均未提及有关字段值的“多个”或“列表”的任何内容,我找不到任何此类语法:
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string&yes=no/a=0").query)
{'query': ['string'], 'yes': ['no/a=0']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string@yes=no").query)
{'query': ['string@yes=no']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string;yes=no").query)
{'query': ['string'], 'yes': ['no']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string,yes=no").query)
{'query': ['string,yes=no']}
似乎没有分隔符会导致键的值包含多个字符串。有可能吗?
【问题讨论】:
标签: python query-string standards urllib specifications