#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() и работать с двумя таблицами