Python: 导入 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访问

156633 次浏览

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

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

根据 Python 2.x urllib模块文档:

注意

urllib模块已被分割成多个部分,并在 Python3中重命名为 urllib.requesturllib.parse,和 urllib.error

Urllib 在 Python3中经历了一些更改,现在可以从 parse 子模块导入

>>> 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 兼容性包装器 六个来处理这个问题。

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将简化 Python2和 Python3之间的兼容性问题,例如不同的导入路径。