Python:导入urllib.quote

时间:2015-08-05 08:17:29

标签: python python-3.x import urllib

我想使用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

访问

5 个答案:

答案 0 :(得分:127)

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

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

根据Python 2.x urllib module documentation

  

注意

     

urllib模块已拆分为多个部分,并在Python 3中重命名为   urllib.requesturllib.parseurllib.error

答案 1 :(得分:38)

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

答案 2 :(得分:11)

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

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

答案 3 :(得分:4)

这就是我在不使用异常的情况下的处理方式。

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

答案 4 :(得分:1)

使用six

from six.moves.urllib.parse import quote

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