urllib – How to urlencode a querystring in Python?
urllib – How to urlencode a querystring in Python?
Python 2
What youre looking for is urllib.quote_plus
:
safe_string = urllib.quote_plus(string_of_characters_like_these:$#@=?%^Q^$)
#Value: string_of_characters_like_these%3A%24%23%40%3D%3F%25%5EQ%5E%24
Python 3
In Python 3, the urllib
package has been broken into smaller components. Youll use urllib.parse.quote_plus
(note the parse
child module)
import urllib.parse
safe_string = urllib.parse.quote_plus(...)
You need to pass your parameters into urlencode()
as either a mapping (dict), or a sequence of 2-tuples, like:
>>> import urllib
>>> f = { eventName : myEvent, eventDescription : cool event}
>>> urllib.urlencode(f)
eventName=myEvent&eventDescription=cool+event
Python 3 or above
Use:
>>> urllib.parse.urlencode(f)
eventName=myEvent&eventDescription=cool+event
Note that this does not do url encoding in the commonly used sense (look at the output). For that use urllib.parse.quote_plus
.
urllib – How to urlencode a querystring in Python?
Try requests instead of urllib and you dont need to bother with urlencode!
import requests
requests.get(http://youraddress.com, params=evt.fields)
EDIT:
If you need ordered name-value pairs or multiple values for a name then set params like so:
params=[(name1,value11), (name1,value12), (name2,value21), ...]
instead of using a dictionary.