timothylhuillier
timothylhuillier

Reputation: 571

Equivalent urllib.parse.quote() in python 2.7

What is the equivalent of urllib.parse.quote

It's urllib.urlencode()?

Thanks

Upvotes: 16

Views: 36879

Answers (3)

allan.simon
allan.simon

Reputation: 4306

actually using the library six, which is made for python2/python3 compatibility you can do

import six.moves.urllib as urllib 

# and now you can use urllib as it was python3
urllib.quote(...) 

and if you just want python2, it was actually urllib.quote directly

Upvotes: 17

André Laszlo
André Laszlo

Reputation: 15537

I think you are looking for urllib.pathname2url. Compare:

Python 3, urllib.parse.quote:

>>> urllib.parse.quote('abc def/foo?bar=baz')
'abc%20def/foo%3Fbar%3Dbaz'

Python 2, urllib.pathname2url:

>>> urllib.pathname2url('abc def/foo?bar=baz')
'abc%20def/foo%3Fbar%3Dbaz'

The behavior seems similar to me, but they might be subtly different.

Edit:

Reading your comment on Algina's post, I think this is my preferred way to build the url:

>>> url = 'http://dev.echonest.com/api/v4/song/search'
>>> params = {'api_key': 'xxxx', 'format': 'json', 'artist': 'Galaxie 500'}
>>> "{}?{}".format(url, urllib.urlencode(params))
'http://dev.echonest.com/api/v4/song/search?api_key=xxxx&artist=Galaxie+500&format=json'

Upvotes: 18

Alg_D
Alg_D

Reputation: 2390

Can you be more specific? you have urllib.parse.quote_plus(...) urllib.parse.quote_from_bytes(...) urllib.parse.unquote(...) like you mentioned

see doc here: https://docs.python.org/3.2/library/urllib.parse.html

Upvotes: 0

Related Questions