2017-01-11 5 views
-1

В соответствии с моим требованием я хочу сопоставить два текстовых файла по строкам в Python на платформе Windows. например, у меня есть следующие текстовые файлы:Как сопоставить два простых текстовых файла по строкам с помощью Python

FILE1:

Меня зовут ххх

Команда выполнена успешно.

имя моей матери ий

Мой мобильный номер 12345

тяжелый грузовик врезался в здание в полночи

грузового автомобиля есть в способности красного яблоко

File2 :

Мой имя xxx

команда. успешно.

Имя моей матери

, что тяжелый грузовик это то, что врезался в здание

грузовой автомобиль ест яблоко на факультете

Извиняюсь за не достаточно ясно, так моя проблема в том, как я могу выровнять фильм сценария с его субтитрами, я пишу следующий код в 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() 

Если кто-нибудь может помочь в этом, я был бы очень благодарен.

+0

Если вы просто хотите проверить, идентичны ли файлы, то предоставленных ответов должно быть достаточно. Для чего-то более сложного я предлагаю вам взглянуть на https://docs.python.org/3.5/library/difflib.html –

+0

Каким должен быть результат этого сравнения? Каков ожидаемый результат здесь? –

+0

Похоже, вы хотите, чтобы мы написали вам код. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно.Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод, трассировка и т. Д.). Чем больше деталей вы предоставляете, тем больше ответов вы получите. Проверьте [FAQ] (http://stackoverflow.com/tour) и [Как спросить] (http://stackoverflow.com/questions/how-to-ask). – TigerhawkT3

ответ

0

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

with open(file1, 'r') as f1, open(file2, 'r') as f2: 
    if f1.readlines() == f2.readlines(): 
     print('Files {} & {} are identical!'.format(file1, file2)) 

PS: Это проверяет ли файлы идентичную. Если вы хотите что-то вроде логического сравнения, сначала вам нужно провести некоторое исследование.

+0

Я прошу прощения за то, что я недостаточно ясен, поэтому моя проблема заключается в том, как я могу выровнять скриптовый фильм с его субтитрами, я пишу следующий код в Python, но этого недостаточно, чтобы получить выравнивание от два текстовых файла. (вы можете найти код в отредактированном вопросе) –

0

Одним из возможных способов является сохранение строк в списке и сравнение списков.

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") 

Надеюсь, что это поможет.

+0

Я прошу прощения за то, что я недостаточно ясен, поэтому моя проблема заключается в том, как я могу выровнять скриптовый фильм с его субтитрами, я пишу следующий код в Python, но этого недостаточно, чтобы получить выравнивание от два текстовых файла. (вы можете найти код в отредактированном вопросе) –