Сопоставить данные между двумя CSV-файлами и заменить данные - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть два 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 голосов
/ 01 декабря 2018

Если я вас правильно понял.Вам нужно сравнивать csvs строка за строкой.

В этом случае вы можете использовать zip in pythoonic way

Для цикла выглядит следующим образом

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...