比较两个CSV文件并打印不同Python的行

时间:2014-11-21 20:06:59

标签: python csv compare diff with-statement

我正在尝试比较两个类似下面的csv文件

English.csv
i
am
is
was
were

Dictionary.csv
i,insomnia
d,disease
bc,breast cancer

我正在尝试比较两个文件中的第一列,并打印与Dictionary.csv不同的行,如下所示

final.csv
d,disease
bc,breast cancer

我试过这段代码。

import csv
with open('English.csv', 'rb') as csvfile1:
    with open ("Dictionary.csv", "rb") as csvfile2:
        reader1 = csv.reader(csvfile1)
        reader2 = csv.reader(csvfile2)
        rows1 = [row for row in reader1]
        rows2 = [row for row in reader2]
        col_a = [row1[0] for row1 in rows1]
        col_b = [row2[0] for row2 in rows2]
        col_c = [row2[1] for row2 in rows2]
        only_b = [text for text in col_b if not text in col_a]

我可以从第一列获取不同的数据,但不能从第二列获取数据,如下所示。如何从第二列获得相应的数据?

>>>only_b
['d','bc']

1 个答案:

答案 0 :(得分:2)

不确定这有多有效但IMO能做到你想做的事情:

import csv
with open('English.csv', 'rb') as csvfile1:
    with open ("Dictionary.csv", "rb") as csvfile2:
        reader1 = csv.reader(csvfile1)
        reader2 = csv.reader(csvfile2)
        rows1_col_a = [row[0] for row in reader1]
        rows2 = [row for row in reader2]
        only_b = []
        for row in rows2:
            if row[0] not in rows1_col_a:
                only_b.append(row)
        print only_b

输出:

[['d', 'disease'], ['bc', 'breast cancer']]