You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从JSON提取值作为新字典键的Python实现问题求助

问题分析与解决

首先看你当前代码里的几个关键问题:

  • 错误的检查对象:你写了if 'code' in content,但content是打开的文件对象,不是加载后的JSON数据,应该检查'code' in json_file(也就是你用json.load(content)得到的字典)。
  • 字典更新语法错误:full.update[c_id:text]完全不符合Python字典的语法,正确的赋值应该是full_text[c_id] = 合并后的文本,或者用full_text.update({c_id: text})。
  • 不必要的循环内拼接:你在遍历body_text的循环里每次都执行text = " ".join(temp),这会导致每次循环都重复拼接已经添加的内容,应该等所有text都加入temp后,再统一拼接一次。
  • 变量名不一致:你定义的字典是full_text,但后面用了full.update,这会导致NameError。

修正后的完整代码

import json

full_text = {}
# 推荐用原始字符串避免Windows路径的转义问题,或者双斜杠写法
file_path = r"C:\root\test.json"

with open(file_path, 'r', encoding='utf-8') as content:
    try:
        json_file = json.load(content)
        # 先验证JSON里是否包含必要的字段
        if 'code' in json_file and 'body_text' in json_file:
            c_id = json_file['code']
            temp = []
            # 遍历收集所有text内容,同时检查每个item是否存在text键
            for item in json_file["body_text"]:
                if 'text' in item:
                    temp.append(item["text"])
            # 统一合并所有文本内容
            combined_text = " ".join(temp)
            # 给目标字典赋值
            full_text[c_id] = combined_text
        else:
            print("JSON数据缺少必要的code或body_text字段")
    except json.JSONDecodeError:
        print("文件不是有效的JSON格式")
    except Exception as e:
        print(f"处理时发生错误: {str(e)}")

print(full_text)

优化细节说明

  • 添加了encoding='utf-8'参数,避免不同系统下的文件编码读取问题
  • 增加了多层字段存在性检查,防止因为JSON结构不完整抛出KeyError
  • 细分异常类型,方便定位是JSON格式错误还是其他运行时错误
  • 路径使用原始字符串写法,避免Windows路径的转义陷阱

运行这段代码后,就能得到你期望的字典结构:{'C568219u': 'some text more text'}。

内容的提问来源于stack exchange,提问作者Nip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:45:39