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

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