Python: передача SequenceMatcher в difflib с флагом autojunk=False приводит к ошибке

Я пытаюсь для использования метода SequenceMatcher в пакете difflib Python для определения сходства строк. Однако у меня было странное поведение с этим методом, и я полагаю, что моя проблема может быть связана с «мусорным» фильтром пакета, проблема подробно описана здесь. Достаточно сказать, что я думал, что смогу решить свою проблему, передав флаг autojunk моему SequenceMatcher способом, описанным документация difflib:

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? Я был бы признателен за любые предложения, которые могут предложить другие.


person duhaime    schedule 02.01.2014    source источник
comment
Какую версию питона вы используете?   -  person falsetru    schedule 02.01.2014


Ответы (1)


Согласно SequenceMatcher документации:

Необязательный аргумент autojunk может использоваться для отключения автоматической эвристики нежелательной почты.

Новое в версии 2.7.1: параметр autojunk.

Обновитесь до Python 2.7.1+, чтобы использовать параметр autojunk.

person falsetru    schedule 02.01.2014
comment
Лучше обновитесь до 2.7.6 - на самом деле нет веских причин обновляться до версии, устаревшей годами ;-) - person Tim Peters; 02.01.2014