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

Python读取CSV筛选romantic分类行时循环仅执行一次问题排查

问题根因
  • 你当前代码每次匹配到符合romantic分类的行时,都会直接给romantic['quotes']重新赋值,新的单条记录会直接覆盖之前的结果,所以最终只能看到最后一条匹配记录,并非循环提前终止。
  • 初始数据结构定义错误:romantic['quotes']需要设置为列表类型,才能存储多条筛选出的记录。
修正后代码
import csv,json
# 初始化结构,quotes字段为列表用于存储多条记录
romantic = {'quotes': []}
with open('quotes.csv') as csvfile:
    data = csv.reader(csvfile, delimiter = '|')
    # 如果CSV第一行是表头,可加上下面这行跳过表头
    # next(data)
    
    # 筛选分类为romantic的行
    for row in data:
        if row[5] == 'romantic':
            # 把当前行数据追加到quotes列表中,而非直接覆盖
            romantic['quotes'].append({
                'quote': row[0],
                'source': row[1],
                'dob-dod': row[2],
                'wplink' : row[3],
                'wpimg': row[4],
                'category':row[5]
            })
            
with open('romjson', 'w+') as jsonfile:
    json.dump(romantic, jsonfile)

# 打印结果
print(romantic) 
补充说明
  • 调整后会把所有匹配到的记录都存入quotes列表,输出的JSON结构也符合多数据的存储要求
  • 如果你的CSV文件第一行是字段名表头,记得取消代码中next(data)的注释,跳过表头避免索引匹配错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:06:05