How to urlencode a querystring in Python?


I am trying to urlencode this string before I submit.

queryString = "eventName=" + evt.fields["eventName"] + "&" + "eventDescription=" + evt.fields["eventDescription"]; 

Answer rating: 1117

Python 2

What you"re 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. You"ll use urllib.parse.quote_plus (note the parse child module)

import urllib.parse
safe_string = urllib.parse.quote_plus(...)

Answer rating: 647

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)

Python 3 or above


>>> urllib.parse.urlencode(f)

Note that this does not do url encoding in the commonly used sense (look at the output). For that use urllib.parse.quote_plus.

Get Solution for free from DataCamp guru