如何在python3中解析url时保留+

uoifb46i  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(139)

当我使用这段代码来解析url查询参数时,代码自动转换为+到““:

from urllib.parse import urlparse, parse_qsl

if __name__ == '__main__':
    parsed_url = urlparse("http://a.com?q=a+b")
    query_params = dict(parse_qsl(parsed_url.query))
    print(query_params.get('q'))

字符串
为什么会出现这种情况呢?是不是可以保持原来的+,不要转换。

dzhpxtsq

dzhpxtsq1#

根据W3C的官方URI specification+ s始终表示查询字符串中的空格:
在查询字符串中,加号被保留为空格的简写符号。因此,必须对真实的加号进行编码。此方法用于使查询URI更容易在不允许空格的系统中传递。
因此,如果你希望它们被这样解码,你必须在查询字符串中将文字加号编码为%2B s:

from urllib.parse import urlparse, parse_qsl

if __name__ == '__main__':
    parsed_url = urlparse("http://a.com?q=a%2Bb")
    query_params = dict(parse_qsl(parsed_url.query))
    print(query_params.get('q'))

字符串
这将产生:

a+b

相关问题