2015-08-05 19 views
35

Vorrei utilizzare urllib.quote(). Ma python (python3) non sta trovando il modulo. Supponiamo, ho questa riga di codice:Python: importazione di urllib.quote

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

Come importo urllib.quote?

import urllib o import urllib.quote sia dare

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

Ciò che mi confonde è che urllib.request è accessibile tramite import urllib.request

risposta

57

In Python 3.x, è necessario importare urllib.parse.quote:

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

Secondo Python 2.x urllib module documentation:

NOTA

Il modulo urllib è stato suddiviso in parti e ribattezzata in Python 3 a urllib.request, urllib.parse, e urllib.error.

8

urllib ha attraversato alcuni cambiamenti nella python3 e può ora essere importato dal modulo di analisi

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

Se avete bisogno di gestire sia Python 2.xe 3.x è possibile intercettare l'eccezione e il carico l'alternativa.

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

Si potrebbe anche usare il pitone compatibilità involucro six per gestire questa situazione.

from six.moves.urllib.parse import quote 
+1

Grazie, vale la pena ricapitolare. –