【问题标题】:URL Decode with Python 3使用 Python 3 进行 URL 解码
【发布时间】:2012-01-27 12:39:43
【问题描述】:

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

采取这样的措施

id%253D184ff84d27c3613d%26quality%3Dmedium

解码两次得到

id=184ff84d27c3613d&quality=medium

【问题讨论】:

    标签: python html python-3.x


    【解决方案1】:

    只需使用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
    

    【讨论】:

    • 我得到了AttributeError: 'module' object has no attribute 'parse',而我必须直接使用urllib.unquote()
    • @Benjamin:您使用的是 Python2。这是针对 Python3 的。
    • 不知道为什么要运行两次,你能解释一下@Blender吗?
    • @Blender 这应该是import urllib.parse
    • 我想知道他们为什么采用“quote”/“unquote”而不是“encode”/“decode”:/
    【解决方案2】:

    试试这个:

    from urllib.parse import unquote
    s = 'id%253D184ff84d27c3613d%26quality%3Dmedium'
    unquote(unquote(s))
    

    它会返回:

    > 'id=184ff84d27c3613d&quality=medium'
    

    【讨论】:

    • Python3 将urlliburllib2 组织成一个带有不同子模块的urllib。这适用于 Python2。
    • 感谢您指出,Python3 中的正确方法是什么? from urllib import parse.unquote?
    • from urllib.parse import unquote。看我的回答。
    • 这里吹毛求疵,但您需要运行该函数两次。该 URL 已被编码两次。
    • 非常感谢你们,对我正在寻找的东西非常有帮助
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2014-06-22
    • 2018-01-03
    • 2021-02-19
    • 2010-10-26
    相关资源
    最近更新 更多