2020-12-28 09:30:43
在 Python 中正确进行 URL 解码和 JSON 解析需分两步:先用urllib.parse.unquote_plus解码 URL 编码字符串,再用json.loads解析为 Python 对象。 以下是详细说明与示例:
一、URL 解码URL 编码将特殊字符(如空格、冒号)转换为%加两位十六进制数的形式(如空格→%20)。Python 的urllib.parse.unquote_plus函数可解码此类字符串,自动处理+号转空格的常见场景。
关键点:unquote_plus会解码%开头的编码,并将+替换为空格,适合处理表单提交等场景。
解码后的字符串若为 JSON 格式,可用json.loads将其转为 Python 字典或列表。需确保字符串符合 JSON 语法(如键名用双引号)。
关键点:json.loads直接解析字符串,返回对应 Python 类型(如字典、列表、数字等)。
结合 URL 解码与 JSON 解析,处理服务器返回的编码数据:
import jsonimport urllib.parse# 模拟接收到的 URL 编码 JSON 数据encoded_data = '%7B%22name%22%3A+%22Alice%22%2C+%22scores%22%3A+%5B90%2C85%2C95%5D%7D'# 解码 URLdecoded_data = urllib.parse.unquote_plus(encoded_data)# 解析 JSON 并处理数据try: json_data = json.loads(decoded_data) print("完整数据:", json_data) print("姓名:", json_data["name"]) print("分数列表:", json_data["scores"]) # 输出: [90, 85, 95]except json.JSONDecodeError as e: print(f"JSON 解析错误: {e}")此方法广泛应用于 Web 开发、API 交互等场景,能有效解决数据传输中的编码问题。