python url编码及解码

在 Python 中,URL 编码和解码可以通过 urllib.parse 模块中的 quoteunquote 函数来实现。以下是详细的用法和示例:


1. URL 编码

使用 quote 函数对字符串进行 URL 编码。

from urllib.parse import quote

# 原始字符串
original_string = "https://www.example.com/path?query=value&param=123"

# URL 编码
encoded_string = quote(original_string)

print("Encoded URL:", encoded_string)

输出:

Encoded URL: https%3A//www.example.com/path%3Fquery%3Dvalue%26param%3D123

2. URL 解码

使用 unquote 函数对 URL 编码的字符串进行解码。

from urllib.parse import unquote

# 编码后的字符串
encoded_string = "https%3A//www.example.com/path%3Fquery%3Dvalue%26param%3D123"

# URL 解码
decoded_string = unquote(encoded_string)

print("Decoded URL:", decoded_string)

输出:

Decoded URL: https://www.example.com/path?query=value&param=123

3. 对查询参数进行编码和解码

如果你只需要对查询参数部分进行编码或解码,可以使用 urlencodeparse_qs 函数。

编码查询参数
from urllib.parse import urlencode

# 查询参数字典
params = {
    "query": "value",
    "param": 123
}

# 编码查询参数
encoded_query = urlencode(params)

print("Encoded Query:", encoded_query)

输出:

Encoded Query: query=value&param=123
解码查询参数
from urllib.parse import parse_qs

# 编码后的查询字符串
encoded_query = "query=value&param=123"

# 解码查询字符串
decoded_query = parse_qs(encoded_query)

print("Decoded Query:", decoded_query)

输出:

Decoded Query: {'query': ['value'], 'param': ['123']}

4. 对路径部分进行编码

如果你只想对 URL 的路径部分进行编码(例如文件名),可以使用 quotesafe 参数来保留 / 等字符。

from urllib.parse import quote

# 路径部分
path = "/path/to/file name with spaces.txt"

# 编码路径(保留斜杠)
encoded_path = quote(path, safe="/")

print("Encoded Path:", encoded_path)

输出:

Encoded Path: /path/to/file%20name%20with%20spaces.txt

总结

  • 编码:使用 quoteurlencode
  • 解码:使用 unquoteparse_qs
  • 根据需求选择是否保留特定字符(如 /)不被编码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的宝藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值