如何使用Python处理Query String重复字段并保留原顺序去重
Python 实现查询字符串去重(保留最后出现值、维持原有顺序)
核心实现代码
from urllib.parse import parse_qsl, urlencode # 低于Python3.7版本可额外导入OrderedDict保证顺序: # from collections import OrderedDict def deduplicate_query_string(input_qs: str) -> str: # 解析查询字符串为有序键值对列表,保留空值字段 kv_pairs = parse_qsl(input_qs, keep_blank_values=True) # 遍历去重,同名字段保留最后一次出现的取值 unique_params = {} # 低于Python3.7版本替换为: # unique_params = OrderedDict() for k, v in kv_pairs: unique_params[k] = v # 转回标准查询字符串格式 return urlencode(unique_params) # 示例测试 if __name__ == "__main__": input_qs = "username=peter&score=80&username=john" output_qs = deduplicate_query_string(input_qs) print(output_qs) # 输出:username=john&score=80
实现说明
- 用标准库
urllib.parse的内置方法解析查询字符串,无需手动处理特殊转义字符、空值等边界情况,兼容性更强 - 利用字典赋值自动覆盖的特性,天然实现同名字段保留最后一次取值的需求
- Python3.7及以上版本普通字典默认维持插入顺序,可保证字段相对顺序和原始输入一致;低版本替换为
OrderedDict即可实现相同效果
内容的提问来源于stack exchange,提问作者Chimmy
相关产品推荐
相关产品推荐

