Сравнение списка файлов csv со списком файлов csv-Python

#python #list #csv #comparison

#python #Список #csv #сравнение

Вопрос:

Вот фрагмент кода :-

 import csv
import sys

f1_name = "Result1.csv"
f2_name = "Result2.csv"
f1 = open(f1_name,'r').readlines()
f2 = open(f2_name,'r').readlines()

count1 = 0
for line in f1:
    result = line.strip("n")
    count1 =1
    if line != "n" and line in f2:
        print "Line({0}) in {1} found in Line{2} in {3}({4})".format(
        str(result),
        f1_name,
        str(1 f2.index(line)),
        f2_name,
        line.strip())
  

Пока что код сравнивает два файла csv и генерирует выходные данные в следующем формате:-

     Line(1  6  1  1  516405  0  21  8  ) in Result1.csv found in Line2 in Result2.csv(1  6  1  1  516405  0  21  8)
Line(1  6  1  1  516405  21  8  ) in Result1.csv found in Line4 in Result2.csv(1  6  1  1  516405  21  8)
Line(1  6  1  1  21  34  ) in Result1.csv found in Line6 in Result2.csv(1  6  1  1  21  34)
Line(1  6  1  21  60  ) in Result1.csv found in Line8 in Result2.csv(1  6  1  21  60)
  

Но это сравнение только между двумя файлами. У меня есть 50 файлов csv для сравнения с 50 файлами csv.

Итак, у меня есть два списка:-

 list1 = [Result1.csv, Result2.csv...Result50.csv]
list2 = [Gen1.csv, Gen2.csv....Gen.csv]
  

Как я могу изменить свой код и сравнить Result1.csv с Gen1.csv, Result2.csv с Gen2.csv и так далее?

Таким образом, желаемый результат будет таким же, но у него будет заголовок, такой как :-

 Comparing Result1.csv to Gen1.csv
(Same output mentioned above)
Comparing Result2.csv to Gen2.csv
(output)
  

и так далее..

Комментарии:

1. если у вас есть 50 резюме. нарисуйте два за раз и поместите сравниваемый файл temp и сравните его с другими

2. почему вы приводите к str и используете форматирование строки?

3. Существует инструмент под названием diff, который делает это, или вы могли бы использовать difflib в python. docs.python.org/2/library/difflib.html

Ответ №1:

возьмите два списка, заархивируйте их и выполните

 import csv
import sys


list1 = ['Result1.csv', 'Result2.csv'...'Result50.csv']
list2 = ['Gen1.csv', 'Gen2.csv'....'Gen.csv']

for i,j in zip(list1,list2):
    f1_name = i
    f2_name = j
    f1 = open(f1_name,'r').readlines()
    f2 = open(f2_name,'r').readlines()

    count1 = 0
    for line in f1:
        result = line.strip("n")
        count1 =1
        if line != "n" and line in f2:
            print "Line({0}) in {1} found in Line{2} in {3}({4})".format(
            str(result),
            f1_name,
            str(1 f2.index(line)),
            f2_name,
            line.strip())
        else:
            if line != "n":
                print line,'-this is not found in file2'

    f1.close()
    f2.close()
  

Комментарии:

1. если вы проголосовали против. пожалуйста, оставьте комментарий и заставьте меня учиться на своих ошибках 🙂

2. Спасибо sundar за усилия. Я хотел спросить еще одну вещь. Как я могу обработать свой код, если что-то не соответствует или не найдено. В настоящее время это работает, только если в обоих файлах CSV найдены точные данные.

3. вы хотите распечатать несопоставимые файлы как из a-b, так и из b-a

4. Да, точно так же, как его сравнение и выдача выходных данных «найдено в», если есть что-то несоответствующее, давайте предположим, что в Result1.csv есть дополнительное поле, которого нет в Gen1.csv, поэтому оно должно выдавать то же самое, но «НЕ НАЙДЕНО» вместо «найдено»

5. @sam: Пожалуйста, воздержитесь от задавания существенных дополнительных вопросов здесь, в комментариях…