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

Python实现CSV转JSON仅读取首尾行数据问题排查

问题根因

索引自增逻辑写错了:你写的i =+ 1不是累加操作,等价于i = +1,每次循环执行完这行i的值都会被固定重置为1,不会逐次递增。
对应你的测试数据,实际执行流程是:

  • 第一次循环(读取John行):i初始值为0,把John行存在data[0],然后执行i =+1,i变成1
  • 第二次循环(读取Fred行):把Fred行存在data[1],然后执行i =+1,i还是1
  • 第三次循环(读取Michelle行):直接覆盖data[1]的原有值(也就是Fred那行数据),存成Michelle行,执行完i还是1
    所以最终输出的JSON里只会剩下索引0的首行John、索引1被最后一次循环覆盖的末行Michelle,中间的Fred行因为索引重复被覆盖丢失了。
修复方案

把错误的自增语句i =+ 1改成正确的累加写法i += 1即可,修复后的代码如下:

import csv
import json

data = {}
with open(file, "rt") as csvf:
    csvReader = csv.DictReader(csvf)
    i = 0
    for rows in csvReader:
        data[i] = rows
        i += 1
jsondata = json.dumps(data, indent=4)
print("jsondata is: ", jsondata)

如果不想手动维护索引,也可以直接用enumerate自动生成遍历索引,代码更简洁不容易写错:

import csv
import json

data = {}
with open(file, "rt") as csvf:
    csvReader = csv.DictReader(csvf)
    for i, rows in enumerate(csvReader):
        data[i] = rows
jsondata = json.dumps(data, indent=4)
print("jsondata is: ", jsondata)

修复后运行就能得到包含全部三行数据的正确JSON结果。

内容的提问来源于stack exchange,提问作者Kaiss B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:24:30