Python url的编码转换

基于python 自带module urllib

from urllib.parse import parse_qs, urlparse, urlencode, unquote, unquote_plus, quote, quote_plus


def parse_url_params(url):
    """将url ?后的参数转成字典"""
    # 提取url参数
    query = urlparse(url).query
    # 将字符串转换为字典
    params = parse_qs(query)
    # 所得的字典的value都是以列表的形式存在,若列表中都只有一个值
    result = {key: params[key][0] for key in params}
    return result


def dict_to_url_params(dct):
    """将字典转成url params格式"""
    return urlencode(dct)


def url_params_encode(value, code_type='plus'):
    """
    将正常url编码 / quote不编码斜杠 /quote_plus编码斜杠
    """
    if code_type == 'plus':
        return quote_plus(value)
    else:
        return quote(value)


def url_params_decode(value, code_type='plus'):
    """
    将url编码转成中文/ unquote不解码加号 /unquote_plus把加号解码为空格
    """
    if code_type == 'plus':
        return unquote_plus(value)
    else:
        return unquote(value)


if __name__ == '__main__':
    a = parse_url_params('https://blog.csdn.net/u011342224/article/details/103138592/?tab=all')
    print(a)  # {'tab': 'all'}

    b = dict_to_url_params({'tab': 'all/+'})
    print(b)  # tab=all%2F%2B

    c = url_params_encode('https://blog.csdn.net/u011342224/article/details/103138592/?tab=all')
    print(c)  # https%3A%2F%2Fblog.csdn.net%2Fu011342224%2Farticle%2Fdetails%2F103138592%2F%3Ftab%3Dall

    d = url_params_decode(c)
    print(d)  #https://blog.csdn.net/u011342224/article/details/103138592/?tab=all

	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章