私はPythondifflibライブラリを使用して、2つのドキュメントが異なる場所を見つけています。Differ()。compare()メソッドはこれを実行しますが、非常に低速です。大きなHTMLドキュメントの場合、diffコマンドと比較して少なくとも100倍遅くなります。
Pythonで2つのドキュメントがどこで異なるかを効率的に判断するにはどうすればよいですか?(理想的には、SequenceMatcher()。get_opcodes()が返す実際のテキストではなく、位置の後にあります。)
私はPythondifflibライブラリを使用して、2つのドキュメントが異なる場所を見つけています。Differ()。compare()メソッドはこれを実行しますが、非常に低速です。大きなHTMLドキュメントの場合、diffコマンドと比較して少なくとも100倍遅くなります。
Pythonで2つのドキュメントがどこで異なるかを効率的に判断するにはどうすればよいですか?(理想的には、SequenceMatcher()。get_opcodes()が返す実際のテキストではなく、位置の後にあります。)
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
Googleには、Python APIを使用したプレーンテキスト用のdiffライブラリがあります。これは、操作するhtmlドキュメントに適用する必要があります。違いの場所に特に関心がある特定のユースケースに適しているかどうかはわかりませんが、一見の価値があります。
醜くて愚かな解決策:diff
もっと速いなら、それを使ってください。を介したPythonからの呼び出しを介してsubprocess
、必要な情報についてコマンド出力を解析します。これは、だけの速度ではありませんdiff
が、おそらくより高速ですdifflib
。