4

私はPythondifflibライブラリを使用して、2つのドキュメントが異なる場所を見つけています。Differ()。compare()メソッドはこれを実行しますが、非常に低速です。大きなHTMLドキュメントの場合、diffコマンドと比較して少なくとも100倍遅くなります。

Pythonで2つのドキュメントがどこで異なるかを効率的に判断するにはどうすればよいですか?(理想的には、SequenceMatcher()。get_opcodes()が返す実際のテキストではなく、位置の後にあります。)

4

3 に答える 3

3
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
于 2010-01-04T12:30:02.623 に答える
2

Googleには、Python APIを使用したプレーンテキスト用のdiffライブラリがあります。これは、操作するhtmlドキュメントに適用する必要があります。違いの場所に特に関心がある特定のユースケースに適しているかどうかはわかりませんが、一見の価値があります。

于 2010-01-04T13:13:00.787 に答える
1

醜くて愚かな解決策:diffもっと速いなら、それを使ってください。を介したPythonからの呼び出しを介してsubprocess、必要な情報についてコマンド出力を解析します。これは、だけの速度ではありませんdiffが、おそらくより高速ですdifflib

于 2010-01-04T12:18:52.907 に答える