Подтвердить что ты не робот

Python: импорт urllib.quote

Я хотел бы использовать urllib.quote(). Но python (python3) не находит модуль. Предположим, у меня есть эта строка кода:

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

Как импортировать urllib.quote?

import urllib или import urllib.quote оба дают

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

Меня смущает то, что urllib.request доступен через import urllib.request

4b9b3361

Ответ 1

В Python 3.x вам нужно импортировать urllib.parse.quote:

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

Согласно документации Python 2.x urllib:

Примечание

Модуль urllib был разбит на части и переименован в Python 3 на urllib.request, urllib.parse и urllib.error.

Ответ 2

Если вам нужно обрабатывать оба Python 2.x и 3.x, вы можете поймать исключение и загрузить альтернативу.

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

Вы также можете использовать обертку совместимости с python six, чтобы справиться с этим.

from six.moves.urllib.parse import quote

Ответ 3

urllib прошел некоторые изменения в Python3 и теперь может быть импортирован из подмодуля синтаксического анализа

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