Über das DiFflib -Modul
Das DIFFLIB -Modul kann, wie der Name schon sagt. Es kann auch verwendet werden, um ein Verhältnis zu finden, das das Ausmaß der Ähnlichkeiten zwischen zwei Objekten zeigt. Die Verwendung des DiFflib -Moduls und seiner Funktionen kann am besten anhand von Beispielen verstanden werden. Einige von ihnen sind unten aufgeführt.
Über Hashable Python -Objekte
In Python werden Objekttypen, deren Wert wahrscheinlich nicht ändert, oder die meisten unveränderlichen Objekttypen werden als Hashable -Typen bezeichnet. Hashable -Typ -Objekte haben einen bestimmten festen Wert, der von Python während der Deklaration zugewiesen wurde, und diese Werte ändern sich während ihrer Lebensdauer nicht. Alle Hashable -Objekte in Python haben eine "__hash__" -Methode. Schauen Sie sich das Code -Beispiel unten an:
Zahl = 6Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:
Das Code -Beispiel enthält drei Python -Typen: ein Ganzzahltypobjekt, ein Objekttyp -Objekt und ein Wörterbuch -Objekt. Die Ausgabe zeigt, dass beim Aufrufen der Methode „__hash__“ das Ganzzahltyp -Objekt und das Objekttyp des String -Typs einen bestimmten Wert anzeigen, während das Objekt des Wörterbuchstyps einen Fehler auswirkt, da es keine Methode mit dem Namen "__hash__" hat. Daher ist ein Ganzzahltyp oder ein String -Typ ein Hashable -Objekt in Python, während ein Wörterbuchtyp nicht ist. Von hier aus können Sie mehr über Hashable -Objekte erfahren.
Vergleich von zwei Hashable -Python -Objekten
Sie können zwei Hashable -Typen oder Sequenzen mit der im DIFFLIB -Modul verfügbaren Klasse "Differenz" vergleichen. Schauen Sie sich das Code -Beispiel unten an.
von DiFflib Import unterscheiden sichDie erste Aussage importiert die Unterrichtsklasse aus dem DIFFLIB -Modul. Als nächstes werden zwei Variablen vom Typ String -Typ mit einigen Werten definiert. Eine neue Instanz der unterschiedlichen Klasse wird dann als "D" erstellt. Mit dieser Instanz wird die Methode "Vergleichen" aufgerufen, um den Unterschied zwischen "Line1" und "Line2" -Saiten zu finden. Diese Saiten werden als Argumente für die Vergleichsmethode geliefert. Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:
Die Striche oder Minuszeichen zeigen, dass „Zeile2“ diese Zeichen nicht hat. Zeichen ohne Anzeichen oder führende Weißespace sind bei beiden Variablen gemeinsam. Zeichen mit Plus -Zeichen sind nur in der Zeichenfolge „Zeile2“ erhältlich. Für eine bessere Lesbarkeit können Sie die Methode "Newline" und "Join" verwenden, um die Zeile nach Leitungsausgabe anzuzeigen:
Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:
Anstelle der Unterrichtsklasse können Sie auch die Klasse „HTMLDIFF“ verwenden, um farbige Ausgabe im HTML -Format zu erzeugen.
von DiFflib import htmldiffDie Code -Probe ist die gleiche wie oben, mit der Ausnahme, dass die Unterrichtsinstanz durch eine Instanz der HTMLDIFF -Klasse ersetzt wurde, und anstelle der Vergleichsmethode nennen Sie nun die Methode "make_file". Nach dem Ausführen des obigen Befehls erhalten Sie eine HTML -Ausgabe im Terminal. Sie können die Ausgabe mit dem Symbol ">" in Bash in eine Datei exportieren, oder Sie können das folgende Code -Beispiel verwenden, um die Ausgabe in einen „Diff) zu exportieren.HTML -Datei von Python selbst.
von DiFflib import htmldiffDie Anweisung "mit offener" im "W" -Modus erzeugt einen neuen "Diff.HTML -Datei und speichert den gesamten Inhalt der Variablen „Differenz“ für den Diff.HTML -Datei. Wenn Sie den Diff öffnen.HTML -Datei In einem Browser sollten Sie ein ähnliches Layout erhalten:
Unterschiede zwischen Inhalt von zwei Dateien erhalten
Wenn Sie mithilfe der Unterschiede Differenzdaten aus dem Inhalt von zwei Dateien erstellen möchten.Compare () -Methode können Sie die Methode „mit offener“ und „Readline“ verwenden, um den Inhalt von Dateien zu lesen. Das folgende Beispiel zeigt dies, wobei der Inhalt von „Datei1.txt ”und„ Datei2.txt ”werden mit" mit offenen "Anweisungen gelesen. Die Anweisungen „mit offenen“ Anweisungen werden verwendet, um Daten aus Dateien sicher zu lesen.
von DiFflib Import unterscheiden sichDer Code ist ziemlich einfach und fast das gleiche wie das oben gezeigte Beispiel. Angenommen, das „Datei1.TXT ”enthält" A "," B "," C "und" D "-Pritte jeweils in einer neuen Zeile und" Datei2 ".TXT ”enthält" C "," D "," E "und" F "-Scharns in jeweils einer neuen Zeile. Das obige Code -Beispiel erzeugt die folgende Ausgabe:
Die Ausgabe ist fast übereinst. Das Zeichen „+“ zeigt Zeilen, die nur in der zweiten Datei vorhanden sind. Zeilen ohne Anzeichen oder beide Anzeichen sind bei beiden Dateien gemeinsam.
Finden von Ähnlichkeitsverhältnissen
Sie können die Klasse "SequencErenatcher" aus dem DIFFLIB -Modul verwenden, um das Ähnlichkeitsverhältnis zwischen zwei Python -Objekten zu finden. Der Bereich des Ähnlichkeitsverhältnisses liegt zwischen 0 und 1, wenn ein Wert von 1 eine genaue Übereinstimmung oder maximale Ähnlichkeit angibt. Ein Wert von 0 zeigt völlig eindeutige Objekte an. Schauen Sie sich das Code -Beispiel unten an:
von DiFflib importieren SequencematcherEine Sequencematcher -Instanz wurde mit Objekten erstellt, die als "A" und "B" Argumente geliefert werden sollen. Die „Verhältnis“ -Methode wird dann auf die Instanz aufgerufen, um das Ähnlichkeitsverhältnis zu erhalten. Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:
Abschluss
Das DIFFLIB -Modul in Python kann auf verschiedene Weise verwendet werden, um Daten aus verschiedenen Hash -Objekten oder Inhalten aus Dateien zu vergleichen. Die Verhältnismethode ist auch nützlich, wenn Sie nur einen Ähnlichkeitsprozentsatz zwischen zwei Objekten erhalten möchten.