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

标签 python query-string standards urllib specifications

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']}

关于python - URL 查询字符串中字段名称的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44085742/

相关文章:

python - 根据柱高绘制 x 轴值的直方图

python - 为什么 pymongo 在 insert_one 操作后更改我的变量?

php - 在 PHP 中使用 $_GET 和 https

c - 使用 realloc 缩小内存分配

python - C++ 等同于 Linux 中 Python 的 time.time()?

python - 在 Python 中制作异步 for 循环

java - UriBuilder 不正确地编码查询参数值?

PayPal PDT 未在查询字符串中返回交易值

html - 用于二进制数据传输和解码的 websocket

string - 组合变音符号出现在代码点之后的顺序是否重要?