この例は2つの文字列を比較します。空白を``junk''とします。
>>> s = SequenceMatcher(lambda x: x == " ", ... "private Thread currentThread;", ... "private volatile Thread currentThread;")
ratio() は、[0, 1] の範囲の値を返し、シーケンスの同一性を測ります。 経験によると、ratio() の値が0.6を超えると、シーケンスがよく似て いることを示します。
>>> print round(s.ratio(), 3) 0.866
シーケンスのどこがマッチしているかにだけ興味のある時には get_matching_blocks() が手軽でしょう。
>>> for block in s.get_matching_blocks(): ... print "a[%d] and b[%d] match for %d elements" % block a[0] and b[0] match for 8 elements a[8] and b[17] match for 6 elements a[14] and b[23] match for 15 elements a[29] and b[38] match for 0 elements
注意:最後のタプルは、get_matching_blocks()が常にダミーで
あることで返されるものです。 (len(a), len(b), 0)
であり、これは最後のタプルの要素(マッチするようその数)がゼロとなる
唯一のケースです。
はじめのシーケンスがどのようにして2番目のものになるのかを知るには、 get_opcodes() を使います。
>>> for opcode in s.get_opcodes(): ... print "%6s a[%d:%d] b[%d:%d]" % opcode equal a[0:8] b[0:8] insert a[8:8] b[8:17] equal a[8:14] b[17:23] equal a[14:29] b[23:38]
See also the function get_close_matches() in this module, which shows how simple code building on SequenceMatcher can be used to do useful work. SequenceMatcher を使った、シンプルで使えるコードを知るには、 このモジュールの関数 get_close_matches() を参照してください。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。