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

如何用pandas读取JSON文件并导出为可读CSV,解决TypeError报错

JSON转CSV报错解决方案

错误原因

TypeError: list indices must be integers or slices, not str报错和JSON里出现多次trades无关,核心原因是你生成的JSON文件顶层是列表结构:
你之前调用接口时把每个投资组合的返回结果都用append存入了rjs列表,最终写入JSON的结构是[ { "trades": [...], "links": {...} }, { "trades": [...], "links": {...} } ],所以json.load得到的data是列表,不能直接用字符串'trades'做索引。

修复代码

把你JSON转CSV的部分替换为以下代码即可:

import csv
import json

# 读取JSON文件
with open('/Users/Filename.json') as json_file:
    data = json.load(json_file)

# 合并所有投资组合的交易数据
all_trades = []
for portfolio_data in data:
    # 取出当前投资组合下的所有交易
    trades = portfolio_data['trades']
    for trade in trades:
        # 不需要links字段直接删除即可,如需保留portfolio链接可替换为下一行注释内容
        trade.pop('links', None)
        # trade['portfolio_link'] = trade.pop('links', {}).get('portfolio', '')
        all_trades.append(trade)

# 写入CSV
with open('/Users/Filename.csv', 'w', newline='', encoding='utf-8') as data_file:
    # 取第一个交易的键作为表头,保证字段顺序一致
    headers = all_trades[0].keys()
    csv_writer = csv.DictWriter(data_file, fieldnames=headers)
    # 写入表头
    csv_writer.writeheader()
    # 批量写入所有交易数据
    csv_writer.writerows(all_trades)

优化说明

  • 遍历顶层列表的每个投资组合数据,统一提取trades字段合并为总交易列表
  • 处理了嵌套的links字典字段,避免写入CSV时出现不符合预期的内容
  • 改用csv.DictWriter和with上下文管理器自动管理文件关闭,代码更稳定
  • 显式指定编码为utf-8避免特殊字符乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:57:04