it-swarm.com.de

Python: urllib.quote wird importiert

Ich möchte urllib.quote() verwenden. Aber python (python3) findet das Modul nicht. Angenommen, ich habe diese Codezeile:

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

Wie importiere ich urllib.quote?

import urllib oder import urllib.quote beide geben

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

Was mich verwirrt ist, dass urllib.request ist erreichbar über import urllib.request

85
Drunken Master

In Python 3.x müssen Sie urllib.parse.quote importieren:

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

Laut Python 2.x urllib Moduldokumentation :

[~ # ~] note [~ # ~]

Das urllib -Modul wurde in Teile aufgeteilt und in Python 3 in urllib.request, urllib.parse Und urllib.error Umbenannt.

138
falsetru

Wenn Sie beide behandeln müssen Python 2.x und 3.x können Sie die Ausnahme abfangen und die Alternative laden.

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

Sie können auch den Kompatibilitätswrapper python six verwenden, um dies zu handhaben.

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

urllib hat einige Änderungen in Python3 durchlaufen und kann nun vom Parser-Submodul importiert werden

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