2014-05-15 2 views
2

Я проверил документы difflib, и я запутался в том, как работает difflib.SequenceMatcher.ratio(). Рассмотрим это:Работа методов set_seq1 и set_seq2, difflib python

s = difflib.SequenceMatcher(None, "hey here" , "hey there").ratio() 
print s 

дает s = 0.9411764705882353
Я хотел бы знать, как именно она вычисляется. Эти 2 строки сравниваются на самом деле смотрит на отклонение одной строки WRT other.for 2 строки и б документы говорят:

различия вычисляются как «то, что нам нужно сделать, чтобы«а «изменить его на« b »?»

И есть что-то вроде:

для й в Ь, b2j [х] список индексов (в В), при которых появляется й; Ударные элементы не отображаются

Просьба пояснить w.r.t приведенный выше пример s.

+0

Похоже, вы должны использовать ' '' вместо ' "'Смотрите:. ' difflib.SequenceMatcher (None ' Эй, там', 'эй там') соотношение() ' является exacly 1,0 –

+0

ИТС" hey here "и" hey there ", цитаты не имеют значения. Вы набрали неправильные слова .. –

ответ

1

Из документов:

где T представляет собой общее количество элементов в обеих последовательностях, и М представляет собой количество совпадений, это 2,0 * М/Т.

В этом case, T равно 17, потому что первая строка имеет 8 символов, а вторая строка - 9. M - это 8, потому что восемь символов из первой строки соответствуют символам второй. 2 * 8/17 равно 0,9411764705882353.