web-dev-qa-db-fra.com

Python: Importation de urllib.quote

Je voudrais utiliser urllib.quote(). Mais python (python3) ne trouve pas le module. Supposons que j'ai cette ligne de code:

print(urllib.quote("châteu", safe=''))

Comment importer urllib.quote?

import urllib ou import urllib.quote les deux donnent

AttributeError: 'module' object has no attribute 'quote'

Ce qui me trouble, c'est que urllib.request est accessible via import urllib.request

85
Drunken Master

Dans Python 3.x, vous devez importer urllib.parse.quote :

_>>> import urllib.parse
>>> urllib.parse.quote("châteu", safe='')
'ch%C3%A2teu'
_

Selon documentation Python 2.x urllib du module :

NOTE

Le module urllib a été scindé en plusieurs parties et renommé en Python 3 en _urllib.request_, _urllib.parse_ et _urllib.error_.

138
falsetru

Si vous devez gérer à la fois Python 2.x et 3.x, vous pouvez intercepter l’exception et charger l’alternative.

try:
    from urllib import quote  # Python 2.X
except ImportError:
    from urllib.parse import quote  # Python 3+

Vous pouvez également utiliser le wrapper de compatibilité python six pour gérer cela.

from six.moves.urllib.parse import quote
42
eandersson

urllib a subi quelques modifications dans Python3 et peut maintenant être importé du sous-module parse

>>> from urllib.parse import quote  
>>> quote('"')                      
'%22'                               
11
Justin Fay