天天看點

Python使用quote、unquote、urlencode、urldecode對url編碼解碼

1、對單個字元串編碼

from urllib.parse import quote, unquote

# 編碼
print(quote("美國"))
# %E7%BE%8E%E5%9B%BD

# 解碼
print(unquote("%E7%BE%8E%E5%9B%BD"))
# 美國      

2、對key-value字典資料編碼

from urllib.parse import unquote, urlencode

data = {
    "name": "Tom",
    "country": "美國",
    "age": 23
}

# 編碼
print(urlencode(data))
# name=Tom&country=%E7%BE%8E%E5%9B%BD&age=23

# 解碼
print(unquote("name=Tom&country=%E7%BE%8E%E5%9B%BD&age=23"))
# name=Tom&country=美國&age=23      

3、自定義實作url解碼

tip: urllib庫沒有提供 urldecode 函數

# 将查詢字元串轉為dict字典資料類型
def urldecode(query):
    item = {}
    for key_value in unquote(query).split("&"):
        key, value = key_value.split("=")
        item[key] = value

    return item


print(urldecode("name=Tom&country=%E7%BE%8E%E5%9B%BD&age=23"))
# {'name': 'Tom', 'country': '美國', 'age': '23'}
      

參考

python中的urlencode與urldecode