Python Requests包中的URI编码

use*_*964 4 python urlencode python-requests

我正在使用python请求包从API获取结果,并且URL包含+登录。但是当我使用request.get时,请求失败,因为API无法理解+号。如果我用%2B(URI编码)替换+号,该请求将如何成功。

有没有办法编码这些字符,以便在将URL传递给请求包时对URL进行编码

Error: test user@gmail.com does not exist
API : https://example.com/test+user@gmail.com
Run Code Online (Sandbox Code Playgroud)

Moh*_*itC 8

您可以使用requests.utils.quote(这只是一个链接urllib.parse.quote)你的文本转换为URL编码格式。

>>> import requests
>>> requests.utils.quote('test+user@gmail.com')
'test%2Buser%40gmail.com'
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案回答了问题,但有点不正确。`'https://example.com?callback_url=' + requests.utils.quote('https://callback.com')` 将返回 `'https://example.com?callback_url=https%3A// callback.com'` (`//` 没有转义)。发生这种情况是因为默认的 `safe='/'` 参数。`requests.utils.quote(some_string, safe='')` 将转义所有特定符号。 (8认同)