сравнение файла txt с файлом csv с помощью python

#python

#python

Вопрос:

Я работаю над разработкой кода на Python, который сравнивал бы txt-файл и csv-файл и выяснял, идентичны ли они или нет.Если нет, найдите ошибки и сведите их в таблицу Excel.

 def main(): 
filename1=input("Enter txt file name:- ") 
filename2=input("Enter csv file name:- ")

fp1=open(filename1,"r") 
fp2=open(filename2,"r")

list1=[] 
list2=[]

for line in fp1: #iterating through each line in the file
   a=line.split(",") #splitting line based on comma
   for i in a: #iterating through each element in list
       i=i.rstrip() #removing new line from elements in list
       list1.append(i) #appending element in the list

for line in fp2:
   a=line.split(",")
   for i in a:
       i=i.rstrip()
       list2.append(i)

fp2=open("res.csv","a") #opening res file in append mode
flag=0

 for i in range(0,len(list1)): #iterating through lists

   if (i==len(list1)-1 and list1[i]!=list2[i]): #if total is different in both files
       fp2.write(list1[i-1] "," str(abs(int(list1[i])-int(list2[i])))) #printing difference
       flag=1
   elif (list1[i]!=list2[i]): #if other lines are different
       fp2.write(list1[i-1] "," list1[i] "," list2[i-1] "," list2[i] "n") #printing different lines
       flag=1

if (flag==0): #if there is no difference
   fp2.write("none")

 main() #calling main function
  

Результатом должна быть таблица Excel с кратким описанием различий между двумя файлами.Приведенный выше код показывает разницу в числах между файлами, но если количество строк отличается, на выходе также должны быть напечатаны строки, которых нет в одном файле. Я был бы признателен за любые идеи по улучшению этого кода и помощь в создании кода для сравнения файлов txt и csv с выводом разницы в электронную таблицу Excel.
Спасибо.
* Я все еще новичок здесь, поэтому, пожалуйста, дайте мне знать, если мне нужно что-то отредактировать или сделать часть моего вопроса более понятной.

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

1. во-первых, оба ваших файла имеют формат csv. во-вторых, вы, похоже, храните все элементы в виде плоского списка, поэтому вы не можете определить различия в строке . Сохраняйте списки списков и вместо этого сравнивайте.

2. подсказка: используйте csv модуль и zip .

3. для сравнения файлов вам было бы лучше использовать что-то вроде модуля csv или pandas, в форматах csv есть некоторые сложности, которые вы не рассматриваете — например, поля в csv могут содержать запятую, но с ними нужно правильно обращаться..

4. Итак, вы предлагаете создать список из обоих списков и затем искать различия в строке с помощью zip? Просто убедитесь, что я правильно понял ваш ответ

5. Похоже, что csv-модуль — это правильный путь. Да, Сталь, я тоже думал о проблеме с полями, поскольку предыдущая попытка, которую я провел с кодом, показала, что все отличается из-за запятых… На самом деле это не исправлено, хотя

Ответ №1:

Если оба файла содержат данные одного и того же типа, я бы рекомендовал прочитать данные .csv и .txt в таблицу данных pandas (после преобразования).

После прочтения вы можете легко работать со столбцами и строками обоих наборов данных, т. е. находить разницу между двумя таблицами и выводить эту разницу в любой формат, который вы хотите.

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

1. Спасибо за ваш ответ, Пол. Извините, что спрашиваю, но что вы имеете в виду после преобразования? преобразование обоих файлов в таблицу pandas?

2. Я имею в виду, что вам, насколько я понимаю, нужно преобразовать ваш файл txt в формат, который больше похож на ваш файл csv. После этого вы можете читать оба файла как csv-файлы с помощью метода pandas по умолчанию read_csv() и работать с двумя таблицами