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

时间:2018-12-01 04:53:04

标签: python list csv file-read

我有两个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]

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确。您需要逐行比较csvs。

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

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])