首页 > 解决方案 > 比较python中的2个csv文件时列表索引超出范围

问题描述

我想比较和更新 2 个 csv 文件。如果 file1 比 file2 多出一行,则应该更新 file2。

这是我的代码:

with open(file1, 'r') as f1, open(file2, 'r') as f2:
    old_file = list(csv.DictReader(f1))
    new_file = list(csv.DictReader(f2))
            
    print(len(old_file)) # It is 20
    print(len(new_file)) # It is 23

    for row in range(len(new_file)):
        if len(old_file) < row :
            if new_file[row]['id'] in old_file[row]:
                print(row)   

此代码在第二个中引发错误if statement。如果我删除它并打印行信息,它工作得很好。这里有什么问题?

标签: pythonpython-3.xcsv

解决方案


你的情况是错误的方法。

for row in range(len(new_file)):
    if len(old_file) < row :
        if new_file[row]['id'] in old_file[row]:
            print(row)   

应该

for row in range(len(new_file)):
    if row < len(old_file):
        if new_file[row]['id'] in old_file[row]:
            print(row)   

推荐阅读