python3 请求使用引号而不是 quote_plus

python3 requests use quote instead of quote_plus

我使用 Python 3 和 requests module/library 来查询 REST 服务。

似乎请求默认使用 urllib.parse.quote_plus() 进行 urlencoding,即空格被转换为 +

然而,我查询的 REST 服务将其误解为 and。所以我需要将空格编码为 %20,即改用 urllib.parse.quote()

有没有简单的方法来处理请求?我在文档中找不到任何选项。

事实证明你可以!

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 here requote_uri 方法在页面的一半左右。