Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较python中的2个csv文件时,列表索引超出范围_Python_Python 3.x_Csv - Fatal编程技术网

比较python中的2个csv文件时,列表索引超出范围

比较python中的2个csv文件时,列表索引超出范围,python,python-3.x,csv,Python,Python 3.x,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

我想比较和更新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)   
打开(文件1,'r')作为f1,打开(文件2,'r')作为f2:
旧文件=列表(csv.DictReader(f1))
新建文件=列表(csv.DictReader(f2))
打印(len(旧文件))#它是20
打印(len(新文件))#它是23
对于范围内的行(len(新_文件)):
如果len(旧文件)<行:
如果旧_文件[row]中的新_文件[row]['id']:
打印(行)

此代码在第二个
if语句中抛出错误。如果我删除它并打印行信息,它就可以正常工作。这里怎么了?

你的情况不对

for row in range(len(new_file)):
    if len(old_file) < row :
        if new_file[row]['id'] in old_file[row]:
            print(row)   
用于范围内的行(len(新_文件)):
如果len(旧文件)<行:
如果旧_文件[row]中的新_文件[row]['id']:
打印(行)
应该是

for row in range(len(new_file)):
    if row < len(old_file):
        if new_file[row]['id'] in old_file[row]:
            print(row)   
用于范围内的行(len(新_文件)):
如果行
old_文件[20]不存在,因此它会出错。是的,但是它如何通过第一个
if语句呢?因为
23>行>=0
。谢谢!!这是一个愚蠢的错误:)