Determinare dove i documenti si differenziano con Python
-
22-09-2019 - |
Domanda
Sono stato con la libreria Python difflib per trovare dove 2 documenti differiscono. Il Differ () confrontare () il metodo fa questo, ma è molto lento -. Atleast 100x più lento per i grandi documenti HTML rispetto al comando diff .
Come posso efficientemente determinare dove 2 documenti differiscono in Python? (Idealmente Sono dopo le posizioni piuttosto il testo vero e proprio, che è quello che SequenceMatcher (). Get_opcodes () restituisce.)
Soluzione
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
Altri suggerimenti
Una soluzione brutto e stupido: se diff
è più veloce, usarlo; attraverso una chiamata da pitone via subprocess
, analizzare l'output del comando per le informazioni necessarie. Questo non sarà veloce come appena diff
, ma forse più veloce di difflib
.