2013-11-12 2 views
1

Использование difflib.compare с python для сравнения двух текстовых файлов. Я знаю, что сравнение возвращает по существу список строк. Когда строка уникальна для первого текстового файла, она помещает перед строкой «-», а когда строка уникальна во втором текстовом файле, она помещает перед строкой «+».python difflib compare output format

Моя проблема заключается в том, что я пытаюсь написать код для определения строки, которую нужно сохранить. Я начал в настоящее время искать «-» в каждой строке, если я ее нашел, я затем выполнил некоторую логику, чтобы определить, буду ли я использовать эту строку или нет. Если бы я не собирался его использовать, я либо искал одну или две строки для «+».

Почти во всех моих случаях линия «-» предшествовала строке «+». Но теперь я получаю экземпляры, где строка «+» предшествует строке «-». Это отбрасывает мой код, поскольку он не может найти правильную строку для записи в выходной текстовый файл. Кто-нибудь знает логику того, как строки записываются в массив, основывается ли он на том, какой номер строки на первом месте?

ex// 
majority of the time out put is this: 
"- color: #ffffff;" 
"+ color: #785642;" 

but rarely it does come out the opposite: 
"+ color: #785642;" 
"- color: #ffffff;" 

ответ

0
DIFFERENCE_OUTPUT = [] 

def find_differences(list1, list2): 
    list1 = sorted(list1) 
    list2 = sorted(list2) 
    for diff in difflib.ndiff(list1,list2): 
     DIFFERENCE_OUTPUT.append(diff) 
    for line in DIFFERENCE_OUTPUT: 
     if line.startswith("-"): 
      #I would suggest change the '-' to the name of the file and print line to see what is there 
      line = line.replace('-','NAME of List') 
      print(line) 
      ****preform task 
     elif line.startswith("+"): 
      ****preform task 

Все '-' должно быть для list1 и все '+' должен быть для list2. Если вы видите «+» перед символом «-», это означает, что в списке2 есть вывод, но list1 не работает или наоборот.

+0

Я ценю предлагаемую помощь, но это на самом деле не решает мою проблему. Почему вы используете ndiff, в отличие от сравнения. Исправьте меня, если я ошибаюсь, но ndiff - это сравнение двух списков, а не текстовых файлов. Также вы сталкиваетесь с той же проблемой, что и я, с порядком, в котором они появляются. Мне нужно сначала искать строки «-», если они не соответствуют критериям, которые у меня есть, тогда мне нужно взять другую текстовую версию этой строки кода. Я полностью понимаю, что означают «+» и «-», как я сказал в своем вопросе. Я получаю несогласованное форматирование вывода. – shreddish

+0

Иногда первая строка кода появляется перед второй строкой, а затем в другое время наоборот. – shreddish