@Sidneyshow74

Python, как реализовать поиск похожей строки?

Учу python, в одной учебной задаче есть часть, которую я не совсем понимаю:
Есть список со строками. Каждая строка - имя человека не больше 20 символов.
Есть переменная с еще одной строкой (так же имя человека). Нужно узнать есть ли она в списке (это просто) и если нет - вывести похожие, разница имени из переменной и похожего слова не больше трех букв.
Как это можно реализовать наиболее компактно?
Гугл отсылает штудировать огромные статьи по нечеткому поиску, которые ориентированы на большие тексты, разные падежи и всё в таком духе.
  • Вопрос задан
  • 5280 просмотров
Пригласить эксперта
Ответы на вопрос 3
@deliro
Я полагаю, что это более простая задача, чем тебе кажется.
Во-первых, нужно проверить, что длины имён одинаковы
Во-вторых, нужно удостовериться, что не более трёх букв разницы.
Как-то так:
def similar(first, second):
    if not len(first) == len(second):
        return False
    if len(first) - sum(l1==l2 for l1, l2 in zip(first, second)) > 3:
        return False
    return True
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Почитайте за расстояние Левенштейна
Под Python есть готовая библиотека https://pypi.python.org/pypi/python-Levenshtein/0....
Ответ написан
Комментировать
@iegor
from difflib import get_close_matches
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы