匹配两个 csv 文件之间的数据并替换数据

Match data between two csv files and replace data

我有两个 csv 文件。 首先就像

a, right 
b, something 
c, right
d, something 

第二个文件

b,  wrong 
e, something 
a,  wrong 
d, something 

我想要像

这样的输出
b, right 
e,  something 
a, right
d, something 

我试过这个代码

import csv

f1 = open("file1.csv")
f2 = open("file2.csv")

csv_f1 = csv.reader(f1)
csv_f2 = csv.reader(f2)

for row1 in csv_f1: 
    for row2 in csv_f2:
        if row1[0] == row2[0]:
            print row1[0], row1[1]
        else:
            print row2[0], row2[1]

如果我没理解错的话。你需要逐行比较csvs。

在这种情况下,您可以 pythoonic 方式使用 zip

For 循环如下所示

for row1, row2 in zip(csv_f1, csv_f2): 

完整代码

import csv

f1 = open("file1.csv")
f2 = open("file2.csv")

csv_f1 = csv.reader(f1)
csv_f2 = csv.reader(f2)

for row1, row2 in zip(csv_f1, csv_f2): 
    if row1[0] == row2[0]:
        print(row1[0], row1[1])
    else:
        print(row2[0], row2[1])

顺便说一句。它在 python3 中。您似乎在使用 python2

和zip_longest

import csv, itertools

f1 = open("file1.csv")
f2 = open("file2.csv")

csv_f1 = csv.reader(f1)
csv_f2 = csv.reader(f2)

for row1, row2 in itertools.zip_longest(csv_f1, csv_f2, fillvalue=[0, 0]):
    if row1[0] == row2[0]:
        print(row1[0], row1[1])
    else:
        print(row2[0], row2[1])