Как мне сопоставить два простых текстовых файла построчно, используя Python
Согласно моему требованию, я хочу сопоставлять два текстовых файла построчно в Python на платформе Windows. например у меня есть следующие текстовые файлы:
File1:
Меня зовут ххх
Команда выполнена успешно.
Мою маму зовут ггг
Мой мобильный номер 12345
тяжелый грузовик врезался в здание в полночь
Грузовик ест на факультете красное яблоко
File2:
Меня зовут ххх
командование успешно.
Имя моей мамы
какой тяжелый грузовик врезался в здание
грузовик ест яблоко на факультете
Я прошу прощения за то, что не достаточно ясно, поэтому моя проблема в том, как я могу выровнять сценарий фильма с его субтитрами, я пишу следующий код на Python, но этого недостаточно, чтобы получить выравнивание из двух текстовых файлов:
# Open file for reading in text mode (default mode)
f1 = open('F:/CONTRIBUTION 2017/SCRIPT-SUBTITLES CODES/Script Alignement Papers/f1.txt','r')
f2 = open('F:/CONTRIBUTION 2017/SCRIPT-SUBTITLES CODES/Script Alignement Papers/f2.txt','r')
#Print confirmation
# print("-----------------------------------")
#print("Comparing files ", " > " + fname1, " < " +fname2, sep='\n')
# print("-----------------------------------")
# Read the first line from the files
f1_line = f1.readline()
f2_line = f2.readline()
# Initialize counter for line number
line_no = 1
# Loop if either file1 or file2 has not reached EOF
while f1_line != '' or f2_line != '':
# Strip the leading whitespaces
f1_line = f1_line.rstrip()
f2_line = f2_line.rstrip()
# Compare the lines from both file
if f1_line != f2_line:
# If a line does not exist on file2 then mark the output with + sign
if f2_line == '' and f1_line != '':
print("=================================================================")
print("=================================================================")
print("line does not exist on File 2 ====================")
print("=================================================================")
print(">+", "Line-%d" % line_no, f1_line)
# otherwise output the line on file1 and mark it with > sign
elif f1_line != '':
print("=================================================================")
print("=================================================================")
print("otherwise output the line on file1 ====================")
print("=================================================================")
print(">", "Line-%d" % line_no, f1_line)
# If a line does not exist on file1 then mark the output with + sign
if f1_line == '' and f2_line != '':
print("=================================================================")
print("=================================================================")
print("=line does not exist on File 1 ====================")
print("=================================================================")
print("<+", "Line-%d" % line_no, f2_line)
# otherwise output the line on file2 and mark it with < sign
elif f2_line != '':
print("=================================================================")
print("=================================================================")
print("otherwise output the line on file2 ====================")
print("=================================================================")
print("<", "Line-%d" % line_no, f2_line)
# Print a blank line
print()
#Read the next line from the file
f1_line = f1.readline()
f2_line = f2.readline()
#Increment line counter
line_no += 1
# Close the files
f1.close()
f2.close()
Если кто-нибудь может помочь сделать это соответствие, я был бы очень благодарен.
2 ответа
Один из возможных способов - сохранить строки файла в списке, а затем сравнить списки.
lines_of_file1 = []
file = open("file1.txt","r")
line = 'sample'
while line != '':
line = file.readline()
lines_of_file1.append(line)
file.close()
lines_of_file2 = []
file = open("file2.txt","r")
line = 'sample'
while line != '':
line = file.readline()
lines_of_file2.append(line)
file.close()
same = True
for line1 in lines_of_file1:
for line2 in lines_of_file2:
if line1 != line2:
same = False
break
if same:
print("Files are same")
else:
print("Files are not same")
Надеюсь, это поможет.
Было бы хорошо опубликовать код, который вы пытались написать. Такое чувство, что мы делаем вашу домашнюю работу и заставляет вас выглядеть ленивым. При этом взгляните на следующее:
with open(file1, 'r') as f1, open(file2, 'r') as f2:
if f1.readlines() == f2.readlines():
print('Files {} & {} are identical!'.format(file1, file2))
PS: это проверяет, идентичны ли файлы. Если вы хотите что-то вроде логического сравнения, вы должны сначала провести некоторое исследование.