Bestimmen Sie, wo Dokumente mit Python unterscheiden
-
22-09-2019 - |
Frage
Ich habe mit der Python difflib Bibliothek zu finden, wo zwei Dokumente unterscheiden. Der Differ () vergleichen () -Methode dies tut, aber es ist sehr langsam -. Atleast 100x langsamer für große HTML-Dokumente im Vergleich zum diff Befehl.
Wie kann ich effizient bestimmen, wo zwei Dokumente in Python unterscheiden? (Idealerweise bin ich nach den Positionen eher der eigentliche Text, der, was SequenceMatcher ist (). Get_opcodes () zurückkehrt.)
Lösung
a = open("file1.txt").readlines()
b = open("file2.txt").readlines()
count = 0
pos = 0
while 1:
count += 1
try:
al = a.pop(0)
bl = b.pop(0)
if al != bl:
print "files differ on line %d, byte %d" % (count,pos)
pos += len(al)
except IndexError:
break
Andere Tipps
Google hat ein diff Bibliothek für Klartext mit einem python-API, die die hTML-Dokumente gelten sollten, mit denen Sie arbeiten möchten. Ich bin nicht sicher, ob es für Ihre speziellen Anwendungsfall geeignet ist, wo man speziell in der Position der Unterschiede interessiert sind, aber es lohnt sich, einen Blick.
Eine hässliche und dumme Lösung: Wenn diff
schneller ist, verwenden Sie es; durch einen Aufruf von Python über subprocess
, analysiert die Befehlsausgabe für die Informationen, die Sie benötigen. Dies wird nicht so schnell wie nur diff
sein, aber vielleicht schneller als difflib
.