weranda
@weranda

Как решить задачу по замене слов, содержащих ошибки на корректные слова?

Приветствую

Наткнулся на задачу:

Дан текст и список слов. Найти в тексте все слова, каждое из которых отличается от некоторого слова из списка одной буквой, и исправить такие слова на слова из списка.


Данные для примера:

text = 'одын и два и тры'
b = ['один', 'три']


Как подойти к решению этой задачи не представляю.
  • Вопрос задан
  • 575 просмотров
Решения вопроса 1
aRegius
@aRegius
Python Enthusiast
Привет.

Пробуйте библиотеку difflib:

>>> text = 'я пешу биз ашибок'
>>> b = ['пишу', 'без', 'ошибок']
>>> text_new = text.split() # т.к. вторым аргументом в difflib.get_close_matches должен быть list
>>> import difflib
>>> for ok_word in b:
	        wrong_word = difflib.get_close_matches(ok_word, text_new) # ищем "плохое" слово
	        wrong_word = ''.join(wrong_word) # преобразуем в строку из списка для корректной работы replace
	        text = text.replace(wrong_word, ok_word)

	
>>> text
'я пишу без ошибок'
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@iegor
Если просто и немасштабируемо, то поиндексно сравниваешь символы слов, считаешь не совпадающие, на выходе должно быть одно не совпадение -заменяешь. А вообще есть алгоритм Левенштейна.
Ответ написан
Комментировать
@Animkim
Питон вокруг меня
На https://checkio.org/ видел задачу, там надо было сравнивать слова и выдавать процент их схожести. И там был словесно описанный алгоритм действий. А дальше просто.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект