Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung des Python-Difflib-Moduls
In diesem Artikel werden hauptsächlich Beispiele des Python-Difflib-Moduls im Detail vorgestellt. Interessierte Freunde können sich auf die vom
Difflib-Modul bereitgestellten Klassen und Methoden beziehen Vergleichen Sie Dateien und generieren Sie einen differenziellen Ergebnistext oder eine differenzielle Vergleichsseite im HTML-Format. Wenn Sie die Unterschiede in Verzeichnissen vergleichen müssen, können Sie das Modul filecmp verwenden.
Klasse difflib.SequenceMatcher
Diese Klasse stellt Methoden zum Vergleichen von Sequenzpaaren beliebiger hashbarer Typen bereit. Diese Methode findet die größte aufeinanderfolgende übereinstimmende Sequenz, die keine „Müll“-Elemente enthält.
Wenn man die Komplexität des Algorithmus vergleicht, hat er aufgrund des ursprünglichen Gestalt-Matching-Algorithmus im schlimmsten Fall n quadratische Operationen und im besten Fall eine lineare Effizienz.
Es verfügt über eine automatische Garbage-Heuristik, die Zeichen, die mehr als 1 % des Fragments oder 200 Mal wiederholt werden, als Garbage behandeln kann. Diese Funktion kann deaktiviert werden, indem Autojunk auf „false“ gesetzt wird.
Klasse difflib.Differ
Diese Klasse vergleicht die Unterschiede zwischen Textzeilen und erzeugt Differenzergebnisse oder inkrementelle Ergebnisse, die für die menschliche Lesbarkeit geeignet sind Die Teildarstellung ist wie folgt:
class difflib.HtmlDiff
Diese Klasse kann verwendet werden, um HTML-Tabellen zu erstellen (oder zu enthalten). Tabellen-HTML-Datei), entsprechende beidseitige Darstellung oder zeilenweise Darstellung zum Vergleich der Differenzergebnisse.
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
make_table(fromlines, tolines [, fromdesc][, todesc][, context ][, numlines])
Beide der beiden oben genannten Methoden können verwendet werden, um eine HTML-Datei zu generieren, die eine Tabelle mit den Vergleichsergebnissen enthält, und ein Teil des Inhalts wird hervorgehoben.
difflib.context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])
Generator
, der a und b (eine Liste von Zeichenfolgen) vergleicht und eine Zeile mit Differenztext zurückgibt. Beispiel:
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] >>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'): ... sys.stdout.write(line) *** before.py --- after.py *************** *** 1,4 **** ! bacon ! eggs ! ham guido --- 1,4 ---- ! python ! eggy ! hamster guido
difflib.get_close_matches(. Wort, Möglichkeiten[, n][, Cutoff])
Gibt die Liste der maximal passenden Ergebnisse zurück
Beispiel:
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy']) ['apple', 'ape'] >>> import keyword >>> get_close_matches('wheel', keyword.kwlist) ['while'] >>> get_close_matches('apple', keyword.kwlist) [] >>> get_close_matches('accept', keyword.kwlist) ['except']
difflib.ndiff(a, b[, linejunk][, charjunk])
Vergleichen Sie a und b (String-Liste) und geben Sie einen Unterschied im Differ-Stil zurück Ergebnis
Beispiel:
>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1), ... 'ore\ntree\nemu\n'.splitlines(1)) >>> print ''.join(diff), - one ? ^ + ore ? ^ - two - three ? - + tree + emu
difflib.restore(sequence, which)
gibt ein Verhältnis von zwei Ergebnissen zurück für Sequenz
Beispiel
>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1), ... 'ore\ntree\nemu\n'.splitlines(1)) >>> diff = list(diff) # materialize the generated delta into a list >>> print ''.join(restore(diff, 1)), one two three >>> print ''.join(restore(diff, 2)), ore tree emu
difflib.unified_diff(a, b[, fromfile][, tofile ][, fromfiledate][, tofiledate][, n][, lineterm])
Vergleichen Sie a und b (String-Liste) und geben Sie ein Differenzergebnis im einheitlichen Diff-Format zurück.
Beispiel:
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] >>> for line in unified_diff(s1, s2, fromfile='before.py', tofile='after.py'): ... sys.stdout.write(line) --- before.py +++ after.py @@ -1,4 +1,4 @@ -bacon -eggs -ham +python +eggy +hamster guido
Praktisches Anwendungsbeispiel
Vergleichen Sie zwei Dateien und generieren Sie dann eine HTML-Datei mit den Differenzergebnissen
#coding:utf-8 ''' file:difflibeg.py date:2017/9/9 10:33 author:lockey email:lockey@123.com desc:diffle module learning and practising ''' import difflib hd = difflib.HtmlDiff() loads = '' with open('G:/python/note/day09/0907code/hostinfo/cpu.py','r') as load: loads = load.readlines() load.close() mems = '' with open('G:/python/note/day09/0907code/hostinfo/mem.py', 'r') as mem: mems = mem.readlines() mem.close() with open('htmlout.html','a+') as fo: fo.write(hd.make_file(loads,mems)) fo.close()
Laufendes Ergebnis:
Generiertes HTML-Dateivergleichsergebnis:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Python-Difflib-Moduls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!