Determinar dónde documentos difieren con Python
-
22-09-2019 - |
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.)
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
.