2014-01-02 2 views
1

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

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

+0

Какую версию python вы используете? – falsetru

+0

2.7, на Windows 8 – duhaime

ответ

2

По SequenceMatcher documentation:

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

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

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

+1

Лучше обновите до 2.7.6 - на самом деле нет веской причины «обновить» до устаревшей версии ;-) –

 Смежные вопросы

  • Нет связанных вопросов^_^