Python如何仅对URL中指定的q参数单独进行URL编码?
实现方案
直接拆分URL单独处理q参数即可,完整实现代码如下:
from urllib.parse import urlparse, parse_qsl, urlencode, quote, urlunparse def encode_specified_q_param(raw_url): # 拆分URL为标准组件 url_components = urlparse(raw_url) # 解析查询字符串为键值对列表 query_list = parse_qsl(url_components.query, keep_blank_values=True) processed_query = [] for k, v in query_list: # 匹配q参数且值以/开头时单独编码 if k == "q" and v.startswith("/"): v = quote(v) processed_query.append((k, v)) # 重新拼接查询字符串 new_query_str = urlencode(processed_query, doseq=True) # 替换原查询组件后组装为完整URL final_url = urlunparse(url_components._replace(query=new_query_str)) return final_url
测试效果
输入示例URL:
test_url = "https://www.exmple.com/test?test1=abc&test2=abc&test3=abc&q=/\"TEST\"/\"TEST\"" print(encode_specified_q_param(test_url))
输出结果和预期完全一致:
https://www.exmple.com/test?test1=abc&test2=abc&test3=abc&q=%2F%22TEST%22%2F%22TEST%22
内容的提问来源于stack exchange,提问作者SERPY
相关产品推荐
相关产品推荐

