Pregunta

He estado usando el difflib biblioteca de Python para encontrar dónde se diferencian 2 documentos. El difieren () comparar () método hace esto, pero es muy lento -. Al menos 100 veces más lento para grandes documentos HTML en comparación con el diff comandos.

¿Cómo puedo determinar dónde eficiente 2 documentos difieren en Python? (Lo ideal sería que yo después de las posiciones en lugar del texto real, que es lo que SequenceMatcher (). Get_opcodes () devuelve.)

¿Fue útil?

Solución

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

Otros consejos

Google tiene una diff biblioteca de texto plano con una Python API, que debe aplicarse a los documentos hTML que desea trabajar. No estoy seguro de si es adecuado para su caso de uso particular en el que está interesado específicamente en la localización de las diferencias, pero vale la pena echar un vistazo a.

Una solución fea y estúpida: Si diff es más rápido, lo utilizan; a través de una llamada de pitón a través subprocess, analizar la salida de comandos para la información que necesita. Esto no va a ser tan rápido como se acaba de diff, pero tal vez más rápido que difflib.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top