2014-11-21 6 views
1

Я пытаюсь сравнить два CSV-файлы, которые, как показано нижеСравнить два файла CSV и распечатать строки, которые отличаются Python

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

Не уверен, насколько эффективно это, но ИМО делает то, что вы хотите:

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']] 
Смежные вопросы