Python3解析URL参数时如何保留+号?+号转空格问题解析
URL查询参数解析时+号被转为空格的原因及保留方法
原因
在URL查询参数的编码规范里,+号被约定为空格的替代表示——这是早期HTML表单提交的传统规则:表单会把空格编码成+号(而非%20)。Python的urllib.parse.parse_qsl方法默认遵循这个规则,所以会自动将查询参数中的+号转换成空格。
保留原始+号的方法
可以通过修改parse_qsl的参数禁止该转换行为:该方法提供了plus参数,默认值为True(开启+号转空格),将其设为False即可保留原始的+号。
修改后的代码示例:
from urllib.parse import urlparse, parse_qsl if __name__ == '__main__': parsed_url = urlparse("http://a.com?q=a+b") # 设置plus=False,禁用+号转空格的规则 query_params = dict(parse_qsl(parsed_url.query, plus=False)) print(query_params.get('q')) # 输出结果为: a+b
设置plus=False后,parse_qsl只会解码%xx格式的URL编码字符,不再处理+号,就能得到原始的参数内容。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

