How to URL encode in Python 3? How to URL encode in Python 3? python python

How to URL encode in Python 3?


You misread the documentation. You need to do two things:

  1. Quote each key and value from your dictionary, and
  2. Encode those into a URL

Luckily urllib.parse.urlencode does both those things in a single step, and that's the function you should be using.

from urllib.parse import urlencode, quote_pluspayload = {'username':'administrator', 'password':'xyz'}result = urlencode(payload, quote_via=quote_plus)# 'password=xyz&username=administrator'


For Python 3 you could try using quote instead of quote_plus:

import urllib.parseprint(urllib.parse.quote("http://www.sample.com/", safe=""))

Result:

http%3A%2F%2Fwww.sample.com%2F

Or:

from requests.utils import requote_urirequote_uri("http://www.sample.com/?id=123 abc")

Result:

'https://www.sample.com/?id=123%20abc'


You’re looking for urllib.parse.urlencode

import urllib.parseparams = {'username': 'administrator', 'password': 'xyz'}encoded = urllib.parse.urlencode(params)# Returns: 'username=administrator&password=xyz'