使用Python 3解码URL

Vla*_*iki 64 html python python-3.x

有没有办法在Python 3中对字符串进行URL解码

采取这样的事情

id%253D184ff84d27c3613d%26quality%3Dmedium
Run Code Online (Sandbox Code Playgroud)

并解码它两次得到

id=184ff84d27c3613d&quality=medium
Run Code Online (Sandbox Code Playgroud)

Ble*_*der 93

只需使用urllib.parse.unquote():

>>> import urllib.parse
>>> urllib.parse.unquote('id%253D184ff84d27c3613d%26quality%3Dmedium')
'id%3D184ff84d27c3613d&quality=medium'
>>> urllib.parse.unquote('id%3D184ff84d27c3613d&quality=medium')
id=184ff84d27c3613d&quality=medium
Run Code Online (Sandbox Code Playgroud)

  • @Benjamin:你正在使用Python2.这适用于Python3. (5认同)
  • @SantoshKumar:因为它被编码了两次. (3认同)
  • 我想知道为什么他们采用了“ quote” /“ unquote”而不是“ encode” /“ decode”:/ (2认同)

Ósc*_*pez 11

试试这个:

from urllib.parse import unquote
s = 'id%253D184ff84d27c3613d%26quality%3Dmedium'
unquote(unquote(s))
Run Code Online (Sandbox Code Playgroud)

它将返回:

> 'id=184ff84d27c3613d&quality=medium'
Run Code Online (Sandbox Code Playgroud)

  • 出于好奇:为什么URL会被编码两次? (6认同)
  • Python3将urllib和urllib2组织成具有不同子模块的单个urllib。这将适用于Python2。 (2认同)
  • 从urllib.parse导入取消引用。看我的答案。 (2认同)