2014-02-12 4 views
-2

У меня есть два CSV файлов .. Я хочу, чтобы сравнить второй столбец file1 с третьей колонкой, а затем распечатать сопоставляются в файл_выводесравнить два файл CSV Python

file1.csv

A0AUZ9 ENSP00000281772

A0AUZ9 ENSP00000405724

A0AUZ9 ENSP00000401408

A0AUZ9 ENSP00000393432

A0AVK6 ENSP00000250024

A0AVK6 ENSP00000434199

A0AVT1 ENSP00000313454

A0AVT1 ENSP00000399234

A0JNW5 ENSP00000279907

file2.csv

meNOG13950 9606 ENSP00000305973 1 264

meNOG14003 9606 ENSP00000281772 1 987

meNOG14125 9606 ENSP00000346414 1 624

meNOG06168 9606 ENSP00000287936 1 888

meNOG06177 9606 ENSP00000313454 1 1052

meNOG06177 9606 ENSP00000333266 1 1012

выходной_файл. txt

meNOG14003 9606 ENSP00000281772 1 987

meNOG06177 9606 ENSP00000313454 1 1052

благодарит

+0

Было бы неплохо посмотреть, что вы пробовали, и на что вы вложили усилие. Не ожидайте больших усилий со стороны сообщества, если вы его не выдвинули. – DeadChex

ответ

1

может быть что-то вроде этого:

import csv 
with open('file1.csv') as f1, open('file2.csv') as f2: 
    reader1, reader2 = [csv.reader(f, delimiter=' ') for f in [f1,f2]] 
    m1 = {row[1]:row for row in reader1} 
    m2 = {row[2]:row for row in reader2} 
    intersect = set(m1.keys()) & set(m2.keys()) 
    with open('output.txt', 'w') as f_out: 
     writer = csv.writer(f_out, delimiter=' ') 
     for k in intersect: 
      writer.writerow(m2[k]) 

выход:

$ cat output.txt 
meNOG14003 9606 ENSP00000281772 1 987 
meNOG06177 9606 ENSP00000313454 1 1052 
+0

Попробуйте этот код в python 2.6.4 и 2.7.3, и оба возвращаются «Traceback (последний последний вызов): Файл« compare3.py », строка 4, в m1 = {row [1]: строка для строки in reader1} Файл "compare3.py ", строка 4, в m1 = {строка [1]: строка для строки в reader1} IndexError: индекс индекса за пределами допустимого диапазона « Могу ли я узнать, какую версию python вы можете использовать? Благодарю. – Chubaka

0

Где ваш код .. .

def do_work(): 
    with open('test.csv') as f: 
     for line in f: 
      line = line.rstrip("\n") 
      column = line.split(",") 
      if column[1] == column[2]: 
       print("Woohoo, {0} is equal to {1}!".format(column[1], column[2])) 

do_work() 

Вот как сравнить столбец 2 с столбцом 3 в том же самом csv, так что строите его. Откройте два обработчика и сравните их с CSV.

Смежные вопросы