import difflib difflib.ndiff(a, b, linejunk=None, charjunk=IS_CHARACTER_JUNK)
a
, b
- списки строк,linejunk
- функция фильтрации символов строк,charjunk=IS_CHARACTER_JUNK
- функция фильтрации символов.Функция ndiff()
модуля difflib
сравнивает списки строк a
и b
и возвращает список строк с указанием различий в строках как генератор строк дельты в стиле Unix утилиты 'diff'.
Необязательные параметры ключевого слова linejunk
и charjunk
являются функциями фильтрации.
linejunk
: функция, которая принимает один строковый аргумент и возвращает True
, если строка является нежелательной, или False
, если нет. По умолчанию linejunk=None
. Существует функция уровня модуля IS_LINE_JUNK()
, которая отфильтровывает строки, не содержащие видимых символов, за исключением максимум одного символа '#'
. Класс SequenceMatcher()
выполняет динамический анализ того, какие строки встречаются так часто, что представляют собой шум и обычно работает лучше чем IS_LINE_JUNK()
.
charjunk
: функция, которая принимает символ - строка длиной 1 символ и возвращает True
, если символ является мусором, или False
, если нет. По умолчанию используется функция уровня модуля IS_CHARACTER_JUNK()
, которая отфильтровывает пробельные символы - пробел или табуляция.
Функция ndiff()
является интерфейсом командной строки модуля difflib
.
>>> import difflib >>> txt1 = 'one\ntwo\nthree\n'.splitlines(keepends=True) >>> txt2 = 'ore\ntree\nemu\n'.splitlines(keepends=True) >>> diff = difflib.ndiff(txt1, txt2) >>> print(''.join(diff), end="") # - one # ? ^ # + ore # ? ^ # - two # - three # ? - # + tree # + emu