web-dev-qa-db-ja.com

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.requestimport urllib.requestを介してアクセス可能であることです

78
Drunken Master

Python 3.xでは、インポートする必要があります urllib.parse.quote

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

Python 2.x urllib module documentation :によると

NOTE

urllibモジュールは部分に分割され、Python 3でurllib.requesturllib.parse、およびurllib.errorに名前が変更されました。

127
falsetru

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
40
eandersson

urllibはPython3でいくつかの変更を経て、parseサブモジュールからインポートできるようになりました

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