如何逐行遍历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
相关产品推荐
相关产品推荐

