Проверьте, является ли строка слова или часть слова в титуле Tkinter Text
Я работаю над програвком для текстового виджета Tkinter. У меня он работает, чтобы пользователь мог выбрать неверное слово и заменить все экземпляры неверного слова в текстовый виджет. Однако, если слово появляется внутри другое слово, он также заменит его. Я не хочу этого.
Например: Скажем, у пользователя есть предложение: Hello how ay you today И они пропустили написанные слова « ‘AS’ AY ‘, они могли щелкнуть правой кнопкой мыши на нем, чтобы заменить все экземпляры или слово« AY ‘ появляется в « ‘. Это означает, что когда пользователь щелчна щелчникам « AY », он превращается в « сегодня » в ‘ todare ‘ — замена » AY ‘IN’ сегодня «с ‘ ‘
Чтобы заменить слово, которое я использую функцию поиска. Я подумал о проверке, если персонажи по обе стороны от прошедшего слова были пробелами, но я не знал, как это реализовать. Вот мой код ниже (ПРИМЕЧАНИЕ — это значительно упрощено, и мой фактический код длинна длиной тысячи строк. В реальной программе кнопка — это контекстное меню):
Как я уже сказал, если пользователь пишет ll ll hello , где ‘ ll ‘ пропускает написанный (давайте скажем, программа исправлена ее, я), когда пользователь нажимает кнопку Следует заменить все слова » ll ‘, но не замените» ll «в Hello ‘.
Это: ll ll hello — & gt; I’ll I’ll hello , не: ll ll hello — & gt; I’ll I’ll heI’llo
Python: Improving performance of code performing spelling correction on text data
I have a text-data in form of comments that I want to preprocess. Apart from cutting away noise like URLs, numbers, . and performing lemmatization, I also want to perform spelling correction. Specifically, I want to perform spelling correction only on words that do not occur more often than a given number of times to avoid false positives. For that purpose, I use pyspellchecker for the correction and nltks FreqDist to get word frequencies, however, doing that increases the time needed for preprocessing significantly.
I tried making things as performant as I could, but I am stuck and was wondering if there are still improvements I could make.
Here is my code: Imports:
As you can see above, I preprocess each individual comment, add all words of that comment to the frequency dictionary and for each word that the spellchecker considers misspelled I save those words and the index of the comment in which they occur in a misspell dictionary. After doing that the frequency dictionary is fully built and I start correcting possibly misspelled words who’s frequency meet a condition in the individual comments.
Working with C code¶
Here’s a Python script that locates the function at one pass within the compile and prints various interesting things about it:
We can run the script during the compile like this:
Here’s the expected output:
Notice how the call to printf has already been optimized into a call to __builtin_puts .
Spell-checking string constants within source code¶
This example add a spell-checker pass to GCC: all string constants are run through the “enchant” spelling-checker:
Ошибки оформления — синтаксис и линтер — Основы Python
Если программа на Python написана синтаксически некорректно, то интерпретатор выводит на экран соответствующее сообщение. Также он указывает на файл и строчку, где произошла ошибка.
Синтаксическая ошибка возникает в том случае, когда код записали с нарушением грамматических правил. В естественных языках грамматика важна, но текст с ошибками обычно можно понять и прочитать. В программировании все строго. Мельчайшее нарушение — и программа даже не запустится. Примером может быть забытая ; , неправильно расставленные скобки и другие детали.
Вот пример кода с синтаксической ошибкой:
Если запустить код выше, то мы увидим следующее сообщение:
С одной стороны, ошибки синтаксиса — самые простые, потому что они связаны с грамматическими правилами написания кода, а не со смыслом кода. Их легко исправить: нужно лишь найти нарушение в записи. С другой стороны, интерпретатор не всегда может четко указать на это нарушение. Поэтому бывает, что забытую скобку нужно поставить не туда, куда указывает сообщение об ошибке.
Ошибки линтера
Мы уже научились писать простые программы, и поэтому можно немного поговорить о том, как писать их правильно.
Код нужно оформлять определенным образом, чтобы он был понятным и простым в поддержке. Существуют специальные наборы правил, которые описывают различные аспекты написания кода — их называют стандартами кодирования. В Python стандарт один — PEP8. Он отвечает практически на все вопросы о том, как оформлять ту или иную часть кода. Этот документ содержит все правила, которых нужно придерживаться. Новичкам мы советуем завести привычку заглядывать в стандарт PEP8 и писать код по нему.
Сегодня не нужно помнить все правила из стандарта, потому что существуют специальные программы, которые проверяют код автоматически и сообщают о нарушениях. Такие программы называются линтерами. Они проверяют код на соответствие стандартам. В Python их достаточно много, и наиболее популярный из них — flake8.
Взгляните на пример:
Линтер будет ругаться на нарушение правила: E225 missing whitespace around operator. По стандарту, все операторы всегда должны отделяться пробелами от операндов.
Выше мы увидели правило E225 — это одно из большого количества правил. Другие правила описывают отступы, названия, скобки, математические операции, длину строчек и множество иных аспектов. Каждое отдельное правило кажется неважным и мелким, но вместе они составляют основу хорошего кода. Список всех правил flake8 доступен в этой документации.
Вы уже знакомы с линтером, потому что в практических заданиях платформа Хекслета проверяет ваш код с помощью него. Скоро вы начнете использовать его и за пределами Хекслета, когда будете реализовывать учебные проекты. Вы настроите линтер, и он будет проверять код уже в реальной разработке и сообщать вам о нарушениях.