Как можно изменить код в 35-й строке, чтобы выводилось как правильное написание слов с ошибками, так и сами ошибочные слова?
Для использования SpellChecker для записи текста в файл без опечаток, можно сделать следующее:
1. Импортировать библиотеку SpellChecker
2. Создать объект SpellChecker
3. Пройти по каждому слову в тексте, проверить его правильность и при необходимости исправить
4. Записать исправленный текст в файл
Пример кода:
```python
from spellchecker import SpellChecker
spell = SpellChecker()
text = "Это превдрвтво покажется вам занимательном."
corrected_text = []
for word in text.split():
corrected_text.append(spell.correction(word))
with open("corrected_text.txt", "w") as f:
f.write(" ".join(corrected_text))
```
Чтобы изменить код в 35-й строке для вывода как правильного написания слов с ошибками, так и сами ошибочные слова, можно использовать методы SpellChecker `candidates()` и `correction()`:
```python
from spellchecker import SpellChecker
spell = SpellChecker()
text = "Это превдрвтво покажется вам занимательном."
corrected_text = []
for word in text.split():
corrected_word = spell.correction(word)
if corrected_word != word:
corrected_text.append(f"{word} -> {corrected_word}")
else:
corrected_text.append(word)
with open("corrected_text.txt", "w") as f:
f.write(" ".join(corrected_text))
```
В данном случае, если слово было исправлено, вместо него в файл будет записана пара "оригинальное слово -> исправленное слово". А если слово не было исправлено, в файл будет записано оригинальное слово.
Если все еще актуально, то можете сделать так. <br/> <br/> spell.candidates напрямую не предназначен для вывода текста, он возвращает только набор предполагаемых вариантов для каждого переданного на проверку слова, поэтому вывод его просто так в строку мало что даст. <br/> <br/> И spell.unknown возвращает только множество "некорректных" слов. <br/> Если цель вывести весь исправленный текст, то лучше использовать spell.correction, можно так: <br/> <pre><code class="python">def save_file():
filepath = filedialog.asksaveasfilename()
if filepath != "":
text = text_editor.get("1.0", END)
with open(filepath, "w") as file:
mistakes = spell.unknown(text.split())
file.write("Ошибки: " + str(mistakes))
# перебираем пословно и заменяем слово, если его считает некорректным
result = []
for word in text.split():
correct = spell.correction(word)
# берем просто изначальное слово, если корректор не нашел его в словаре
result.append(correct if correct else word)
file.write("\n")
file.write("Правильное написание: " + ' '.join(result))</code></pre> <br/> Если все-таки предполагалось выводить в файл не весь исправленный текст, а только ошибочные слова, то не сложно будет изменить, просто перебираете не по всему тексту, а по своему mistakes.