我想使用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
答案 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.request
,urllib.parse
和urllib.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)