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.)

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top