URL 查询字符串中字段名称的多个值?

Multiple values for field names in a URL query string?

Python3 的 urllib.parse.parse_qs 奇怪地 returns 查询字符串 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 表示:

The dictionary keys are the unique query variable names and the values are lists of values for each name.

我能否以某种方式利用这种“值列表”功能?

Wikipedia, nor Stack Overflow, nor 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']}

似乎没有任何分隔符会导致键的值包含多个字符串。可能吗?

如果有重复的查询键,您将得到一个超过 1 个元素的列表:

>>> url = p.urlparse("http://exam.ple/path?query=string1&query=string2")
>>> p.parse_qs(url.query)
{'query': ['string1', 'string2']}