python3请求使用quote而不是quote_plus

mec1mxoz  于 2023-06-07  发布在  Python
关注(0)|答案(2)|浏览(290)

我使用Python 3和requests模块/库来查询REST服务。
似乎请求默认使用urllib.parse.quote_plus()进行url编码,即空格转换为+
然而,我查询的REST服务将其误解为and。所以我需要将空格编码为%20,即使用urllib.parse.quote()代替。
有没有简单的方法来处理请求?我在文档中找不到任何选项。

ldioqlga

ldioqlga1#

事实证明你可以!

from requests.utils import requote_uri
url = "https://www.somerandom.com/?name=Something Cool"
requote_uri(url)

'https://www.somerandom.com/?name=Something%20Cool'

documentation hererequote_uri方法大约在页面的中间。

gzszwxb4

gzszwxb42#

了解背景
添加一个别名到你的.aliases文件:

alias urlencode='$(which python3) -c "import sys; from requests.utils import requote_uri; print(requote_uri(sys.argv[1]));"'

然后:

source .aliases && urlencode "https://www.somerandom.com/?name=Something Cool"

相关问题