Это пограничная обработка на естественном языке, но наивным решением является загрузка списка допустимых слов из текстового файла, разбиение строки на куски буквенных символов и поиск каждого из них в словаре.
>>> import re
>>> import requests
>>> s = "!$#apple!ed"
>>> url = "https://raw.githubusercontent.com/dwyl/english-words/master/words_dictionary.json"
>>> words = requests.get(url).json()
>>> alpha_chunks = re.findall(r"[a-z]+", s, re.I)
>>> [x for x in alpha_chunks if x.lower() in words]
['apple', 'ed']
Оказывается, "ed"
- совершенно правильное словарное слово в дополнение к "apple"
, поэтому, если вы собираетесь отклонить это, используйте список слов, который соответствует вашим потребностям. Кроме того, запрашиваемый выше словарь составляет 6 МБ, поэтому вы, вероятно, захотите его кэшировать в зависимости от того, какой у вас вариант использования.