cat*_*cat 1 python standards specifications urllib query-string
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']}
Run Code Online (Sandbox Code Playgroud)
该函数的文档说:
字典键是唯一的查询变量名称,而值是每个名称的值列表。
我可以以某种方式利用此“值列表”功能吗?
无论是维基百科,也不堆栈溢出,也不IETF规范有关“多”或字段的值“列表”提任何东西,我找不到任何这样的语法:
>>> 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']}
Run Code Online (Sandbox Code Playgroud)
似乎没有分隔符会导致键的值包含多个字符串。可能吗?
如果存在重复的查询键,您将获得一个长度超过1个元素的列表:
>>> url = p.urlparse("http://exam.ple/path?query=string1&query=string2")
>>> p.parse_qs(url.query)
{'query': ['string1', 'string2']}
Run Code Online (Sandbox Code Playgroud)