3

Python の difflib パッケージの SequenceMatcher メソッドを使用して、文字列の類似性を識別しようとしています。しかし、私はこのメソッドで奇妙な動作を経験しました。私の問題は、パッケージの「ジャンク」フィルターに関連している可能性があると思います。この問題については、こちらで詳しく説明しています。difflib のドキュメントで説明されている方法で、autojunk フラグを SequenceMatcher に渡すことで問題を解決できると思ったと言えば十分です。

import difflib

def matches(s1, s2):
    s = difflib.SequenceMatcher(None, s1, s2, autojunk=False)
    match = [s1[i:i+n] for i, j, n in s.get_matching_blocks() if n > 0]
    return match

print matches("they all are white a sheet of spotless paper when they first are born but they are to be scrawled upon and blotted by every goose quill", "you are all white a sheet of lovely spotless paper when you first are born but you are to be scrawled and blotted by every gooses quill")

しかし、これにより次のエラー メッセージが表示されます。

Traceback (most recent call last):
  File "test3.py", line 8, in <module>
    print matches("they all are white a sheet of spotless paper when they first are born but they are to be scrawled upon and blotted by every goose quill", "you are all white a sheet of lovely spotless paper when you first are born but you are to be scrawled and blotted by every gooses quill")
  File "test3.py", line 4, in matches
    s = difflib.SequenceMatcher(None, s1, s2, autojunk=False)
TypeError: __init__() got an unexpected keyword argument 'autojunk'

autojunk=False フラグを SequenceMatcher に渡す方法を知っている人はいますか? 他の人が提供できる提案に感謝します。

4

1 に答える 1