У меня есть много строк, которые я хочу сопоставить для сходства (каждая строка составляет в среднем 30 символов). Я нашел difflib's
SequenceMatcher
отлично подходит для этой задачи, поскольку это было просто и нашло результаты хорошо. Но если я сравнить hellboy
и hell-boy
как этотСоздание последовательности символов difflib SequenceMatcher игнорировать символы «нежелательной»
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
Я хочу, чтобы такие слова, чтобы дать матч на 100 процентов ratio of 1.0
то есть. Я понимаю, что символ нежелательной почты, указанный в приведенной выше функции, не используется для сравнения, а находит самую длинную непрерывную подпоследовательность. Есть ли способ, которым я могу сделать SequenceMatcher
, чтобы игнорировать некоторые «нежелательные» символы для целей сравнения?
Это своего родом хак , но по какой-либо причине вы не могли просто удалить символы _junk_ перед выполнением сравнения? По сути, это то же самое, что игнорировать их. –
да, это хорошо, но я хотел выяснить, могу ли я просто сделать некоторую магию «difflib» и уйти с ней, иначе мне пришлось бы передать строку через другую функцию, чтобы сначала удалить все ненужные символы. – lovesh