比较python中的2个csv文件时,列表索引超出范围
我想比较和更新2个csv文件。如果file1比file2多出一行,则应更新file2 这是我的密码:比较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
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
。谢谢!!这是一个愚蠢的错误:)