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

如何逐行遍历CSV元素并与另一行元素进行比较?

CSV行元素对比实现方案

首先修正你原代码的两处问题:

  • with语句会自动管理文件生命周期,无需手动调用cs.close()
  • 代码缩进需规范,csv_reader = csv.reader(cs)要缩进在with代码块内

要实现源行与目标行的元素遍历对比,我们可以先把CSV所有行读取到列表中,这样能方便地获取任意行进行逐元素比较:

import csv

# 读取所有行到列表,方便后续调用
with open('C:\\Users\\user\\Desktop\\test_readwrite.csv', 'r', encoding='utf-8') as cs:
    csv_reader = csv.reader(cs)
    all_rows = list(csv_reader)

# 示例:选取第1行(索引0)作为源行,第2行(索引1)作为目标行
# 可根据需求修改行索引
source_row = all_rows[0]
target_row = all_rows[1]

# 逐元素对比源行与目标行
print("源行与目标行元素对比:")
for idx, (source_elem, target_elem) in enumerate(zip(source_row, target_row)):
    if source_elem == target_elem:
        print(f"第{idx+1}个元素相同:{source_elem}")
    else:
        print(f"第{idx+1}个元素不同:源行={source_elem},目标行={target_elem}")

# 若需批量对比所有行两两组合,可使用嵌套循环
print("\n所有行两两对比:")
for i in range(len(all_rows)):
    for j in range(i+1, len(all_rows)):
        print(f"\n对比第{i+1}行和第{j+1}行:")
        for idx, (elem1, elem2) in enumerate(zip(all_rows[i], all_rows[j])):
            status = "相同" if elem1 == elem2 else "不同"
            print(f"第{idx+1}个元素{status}:行{i+1}={elem1},行{j+1}={elem2}")

关键说明

  • 先将所有行存入all_rows列表,避免重复读取文件,便于随时调用任意行
  • 用zip()函数同时遍历两行元素,配合enumerate()获取元素位置索引
  • 对比特定行时,直接修改行索引即可;批量对比所有行组合则用嵌套循环实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:35:26