Skip to main content
 首页 » 编程设计

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

2025年05月04日34zdz8207

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说:

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

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

都不是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']} 

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

请您参考如下方法:

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

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