问题: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
回答 0
在Python 3.x中,您需要导入urllib.parse.quote
:
>>> import urllib.parse
>>> urllib.parse.quote("châteu", safe='')
'ch%C3%A2teu'
注意
该
urllib
模块已经被分成部分和更名在Python 3urllib.request
,urllib.parse
,和urllib.error
。
回答 1
如果您需要同时处理Python 2.x和3.x,则可以捕获异常并加载替代项。
try:
from urllib import quote # Python 2.X
except ImportError:
from urllib.parse import quote # Python 3+
您还可以使用python兼容性包装器6来处理此问题。
from six.moves.urllib.parse import quote
回答 2
urllib在Python3中进行了一些更改,现在可以从parse子模块中导入
>>> from urllib.parse import quote
>>> quote('"')
'%22'
回答 3
这就是我在不使用异常的情况下的处理方式。
import sys
if sys.version_info.major > 2: # Python 3 or later
from urllib.parse import quote
else: # Python 2
from urllib import quote