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

Python实现JSON转CSV时出现'str' object has no attribute 'keys'报错如何解决

错误原因
  • 直接遍历字典默认只会遍历字典的键,你声明的User_data是结构为{字符串ID: 用户属性字典}的嵌套字典,因此for User in User_data语句里拿到的User是-MlIoVUgATqwtD_3AeCb这类字符串类型的ID,不是你预期的用户属性字典,自然不存在keys()方法,触发报错。
修复方案

只需修改遍历逻辑,改为遍历User_data的values()即可取到所有用户属性字典,同时推荐使用with上下文管理器处理CSV文件写入,避免手动关闭文件的遗漏问题,修正后代码如下:

import json
import csv

# 读取JSON文件
with open('/Users/jhillier5/Downloads/mentalhealthcheck-in-default-rtdb-export (1).json') as json_file:
    data = json.load(json_file)

User_data = data['User']

# 写入CSV文件,用with自动管理文件关闭
with open('data_file.csv', 'w', newline='', encoding='utf-8') as data_file:
    csv_writer = csv.writer(data_file)
    count = 0
    # 遍历字典的value,拿到用户属性字典
    for User in User_data.values():
        if count == 0:
            # 写入表头
            header = User.keys()
            csv_writer.writerow(header)
            count += 1
        # 写入对应值
        csv_writer.writerow(User.values())

补充提示:你给出的JSON示例中Grade字段末尾多了一个多余的逗号,不符合标准JSON语法,如果运行时出现JSON解析报错,先删除该多余逗号即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:48:01