18
votes

I am using python requests package to get results from a API and the URL contains + sign in it. but when I use requests.get, the request is failing as the API is not able to understand + sign. how ever if I replace + sign with %2B (URI Encoding) the request is successful.

Is there way to encode these characters, so that I encode the URL while passing it to the requests package

Error: test [email protected] does not exist
API : https://example.com/[email protected]
1
Take a look at urllib.parse. In particular, see urlencode, but it's a good idea to see what else that module has to offer. - PM 2Ring

1 Answers

37
votes

You can use requests.utils.quote (which is just a link to urllib.parse.quote) to convert your text to url encoded format.

>>> import requests
>>> requests.utils.quote('[email protected]')
'test%2Buser%40gmail.com'