##
4.4.2 SequenceMatcher の例

この例は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()` を参照してください。