#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: Пожалуйста, воздержитесь от задавания существенных дополнительных вопросов здесь, в комментариях…