Python:正在导入 urllib.quote

Python: Importing urllib.quote

我想使用 urllib.quote()。但是 python (python3) 没有找到模块。 假设,我有这行代码:

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

如何导入 urllib.quote?

import urllibimport urllib.quote 都给

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

让我感到困惑的是 urllib.request 可以通过 import urllib.request

访问

在Python3.x中,需要导入urllib.parse.quote:

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

根据Python 2.x urllib module documentation

NOTE

The urllib module has been split into parts and renamed in Python 3 to urllib.request, urllib.parse, and urllib.error.

urllib 在 Python3 中进行了一些更改,现在可以从解析子模块中导入

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

如果您需要同时处理 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

这就是我处理这个问题的方式,没有使用异常。

import sys
if sys.version_info.major > 2:  # Python 3 or later
    from urllib.parse import quote
else:  # Python 2
    from urllib import quote

使用six:

from six.moves.urllib.parse import quote

six 将简化 Python 2 和 Python 3 之间的兼容性问题,例如不同的导入路径。