Сообщить об ошибке.

Функция context_diff() модуля difflib в Python

Получить только измененные строки при сравнении двух текстов

Синтаксис:

import difflib

difflib.context_diff(a, b, fromfile='', tofile='', \
                     fromfiledate='', tofiledate='', \
                     n=3, lineterm='\n')

Параметры:

  • a и b - сравниваемые списки строк.
  • fromfile='' - строка, заголовок для имени файла,
  • tofile='' - строка, заголовок для имени файла,
  • fromfiledate='' - время модификации в формате ISO 8601,
  • tofiledate='' - время модификации в формате ISO 8601,
  • n=3 - число строк контекста,
  • lineterm='\n' - разделитель строк.

Возвращаемое значение:

Описание:

Функция context_diff() модуля difflib сравнивает a и b - списки строк и возвращает дельту - генератор дельта-строк в формате context_diff().

Контекстные различия - это компактный способ отображения только тех строк, которые изменились, плюс несколько строк контекста. Изменения отображаются в стиле "до/после". Число строк контекста задается числом n, которое по умолчанию равно трем.

По умолчанию строки управления diff (те, что с *** или ---) создаются с символом новой строки '\n'. создаются с завершающей новой строкой. Это полезно, так как входы, созданные из результатов работы io.IOBase.readline() приводят к различиям, которые подходят для использования io.IOBase.writelines(), так как и входы, и выходы имеют конечные новые строки.

Для входных данных, которые не имеют завершающих символов новой строки, установите аргумент lineterm='', чтобы выходные данные не имели новых строк.

Формат context_diff() имеет заголовок для имен файлов и времени изменения. Любой из них или все они могут быть заданы с помощью строк для fromfile, tofile, fromfiledate и tofiledate. Время модификации обычно выражается в формате ISO 8601. Если не указано, строки по умолчанию будут пустыми.

Примеры использования:

>>> import sys, difflib as df
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> diff = df.context_diff(s1, s2, fromfile='before.py', tofile='after.py')
>>> sys.stdout.writelines(diff)
# *** before.py
# --- after.py
# ***************
# *** 1,4 ****
# ! bacon
# ! eggs
# ! ham
#   guido
# --- 1,4 ----
# ! python
# ! eggy
# ! hamster
#   guido

Смотрите интерфейс командной строки для модуля difflib для более подробного примера.