Проблема с проверкой орфографии в Pycharm

Я столкнулся с такой проблемой: когда я пишу код или комментарий на русском языке, то у меня все русские слова подчеркнуты зеленой волнистой линией (на скриншоте пару штук не подчеркнуты потому, что я их добавил в словарь
- intellij-idea
- pycharm
- проверка-орфографии
Отслеживать
4,416 23 23 золотых знака 23 23 серебряных знака 25 25 бронзовых знаков
задан 6 дек 2021 в 16:06
91 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
Пожалуйста, уточните вашу конкретную проблему или приведите более подробную информацию о том, что именно вам нужно. В текущем виде сложно понять, что именно вы спрашиваете.
6 дек 2021 в 16:12
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Скорее всего у вас не установлена поддержка русского языка.
Зайдите в настройки (меню File -> Settings) и найдите раздел Editor -> Natural Languages
Справа будет список языков, а под ним иконка со знаком + для добавления дополнительных языков. Добавьте русский язык и всё должно заработать.

Дополнительную информацию ищите в доках плагина Grazie.
Как убрать подчёркивание некоторых названий в PyCharm?
Решил создать проект в PyChram, написал все названия и получил такое, можете подсказать, как это убрать или в чём проблема?
- Вопрос задан более двух лет назад
- 1418 просмотров
1 комментарий
Простой 1 комментарий

Названия файлов принято давать не в кириллице — пиши на английском
Решения вопроса 1
где продолжение? IDE вполне закономерно ругается на некорректный синтаксис и другие ошибки, это одна из её функций. Завершите синтаксическую конструкцию, подчеркивание пропадет
def F(n): pass
P.S. Имена функциям\методам принято давать с маленькой буквы, разделяя слова подстрочным тире, имена классов — CamelCase
2.2. Практикум¶
При выполнении заданий используйте заготовки решений: -> Репозиторий.
2.2.1. Установка и настройка¶
В настоящем курсе используются Python 3.5, Geany 1.30, Atom 1.23 и PyCharm 2019, однако могут быть установлены и их более свежие версии.
2.2.1.1. Python¶
Для установки Python необходимо выполнить ряд действий в зависимости от ОС:
- определить разрядность ОС (32- или 64-битная, инструкции для Windows, Mac OS X или Linux);
- открыть страницу загрузки (общая) и загрузить соответствующий дистрибутив;
- выполнить установку (при установке на ОС Windows необходимо установить флажок Add python.exe to PATH во время установки).
В дистрибутивах Linux с пакетным менеджером, удобнее использовать его команды, например:
sudo apt-get install python3 sudo apt-get install python3-pip sudo apt-get install idle3
После установки запустите терминал и убедитесь, что необходимая версия Python установлена.
2.2.1.1.1. Дополнительные пакеты¶
Задания, выполняемые на Python, должны проходить автоматическую проверку (валидацию) и соответствовать стандарту оформления PEP 8. Для поддержки этой возможности откройте терминал в папке с tests (в папке с заданиями) и выполните команду установки:
pip install -r requirements.txt
Запуск проверки отдельно для каждой IDE описан далее.
2.2.1.2. IDE¶
В рамках курса возможности Atom, Geany и PyCharm не отличаются, поэтому выбор остается за Вами: Atom и PyCharm являются более современными и популярными IDE, в то время как Geany обладает необходимыми возможностями и поддерживает русский язык в интерфейсе.
В курсе достаточно использовать одну из IDE.
2.2.1.2.1. Atom¶
Для установки необходимо перейти на официальный сайт Atom и загрузить предложенный дистрибутив.
Главное окно Atom приведено на Рисунке 2.2.1; в Таблице 2.2.1 — краткое описание элементов интерфейса.

Рисунок 2.2.1 — Главное окно IDE Atom ¶
Таблица 2.2.1 — Элементы интерфейса главного окна Atom ¶
Назначение / Что можно найти?
Все доступные команды IDE
Список открытых файлов
Дерево файлов проекта
Набор кода с подсветкой синтаксиса и прочими удобствами
Удобное отображение структуры файла
Информация о запуске программы, ошибках в стандарте оформления и т.д.
Информация о файле: кодировка, положение курсора в редакторе кода и т.д.
Некоторые из элементов главного окна отобразятся после дополнительной настройки.
2.2.1.2.1.1. Настройка отступов и пробелов¶
В главном меню Atom нажмите Ctrl + Shift + P , наберите settings и нажмите . Проверьте значения следующих параметров:
- установлен флажок «Show Indent Guide»;
- установлен флажок «Show Invisibles»;
- установлен флажок «Soft Wrap».
2.2.1.2.1.2. Установка и настройка пакетов¶
Дополнительно необходимо установить следующие пакеты:
- minimap: «мини-карта» документа;
- linter-flake8: проверка на соответствие кода стандарту PEP 8;
- autocomplete-python: интерактивная подсказка синтаксиса языка;
- atom-python-run: запуск программы из редактора.
Установку дополнений можно произвести (1) из терминала или (2) в графическом интерфейсе.
- Откройте терминал и введите команду:
apm install minimap linter-flake8 autocomplete-python atom-python-run intentions busy-signal linter linter-ui-default
- В главном окне Atom:
- в текстовом поле Search packages введите имя пакета и нажмите для его поиска;
- установите найденный пакет, нажав на кнопку Install; в случае дополнительных запросов на установку зависимых пакетов (dependencies) необходимо ответить Yes.
2.2.1.2.1.3. Автоматическая проверка заданий и PEP8¶
Установленные плагины позволяют автоматически выполнять проверку на соответствие кода стандарту PEP 8, отображая ошибки в окне сообщений.
Для проверки выполняемых заданий откройте настройки пакета atom-python-run и проверьте, что команды установлены как на Рисунке 2.2.2 (обведено красным), где путь ..\tests\test.py — относительный путь к валидатору test.py .

Рисунок 2.2.2 — Команды сборки Python ¶
После настройки используйте команды:
- F5: запуск программы на выполнение;
- F6: запуск автоматической проверки решенной задачи (см. пример: Цикл выполнения и защиты заданий ).
2.2.1.2.2. Geany¶
Для установки Geany необходимо выполнить следующие шаги в зависимости от операционной системы.
- на официальном сайте Geany перейти в раздел Download/Releases, загрузить соответствующий дистрибутив ( geany-1.X_setup.exe или geany-1.X_osx.dmg ) и выполнить установку;
- только для Windows(!): на официальном сайте плагинов Geany перейти в раздел Downloads, загрузить дистрибутив, соответствующий по версии установленной Geany ( geany-plugins-1.X_setup.exe ) и выполнить установку.
В дистрибутивах Linux с пакетным менеджером, удобнее использовать его команды, например:
sudo add-apt-repository ppa:geany-dev/ppa sudo apt-get update sudo apt-get install geany geany-plugins
Для других дистрибутивов:
- на официальном сайте Geany перейти в раздел Download/Third Party Packages и выполнить инструкции для своего дистрибутива Linux;
- на официальном сайте плагинов Geany перейти в раздел Installation и выполнить инструкции для своего дистрибутива Linux.
Главное окно Geany приведено на Рисунке 2.2.3; в Таблице 2.2.2 — краткое описание элементов интерфейса.

Рисунок 2.2.3 — Главное окно IDE Geany ¶
Таблица 2.2.2 — Элементы интерфейса главного окна Geany ¶
Назначение / Что можно найти?
Все доступные команды IDE
Быстрый доступ к командам работы с файлами, а также запуску программ
Список открытых файлов
Отображение идентификаторов программы, дерева файлов и т.д.
Набор кода с подсветкой синтаксиса и прочими удобствами
Удобное отображение структуры файла
Информация о запуске программы или о выполнении прочих команд
Информация о файле: кодировка, положение курсора в редакторе кода и т.д.
Некоторые из элементов главного окна отобразятся после дополнительной настройки.
2.2.1.2.2.1. Настройка отступов и пробелов¶
В главном меню Geany выберите Правка -> Настройки (Edit -> Preferences). Проверьте значения следующих параметров:
-
вкладка Редактор (Editor):
- вкладка Возможности (Features):
- установлен флажок «Новая строка убирает лишние пробелы» («Newline strips trailing spaces»);
- поле «Маркер переключения комментариев» («Comment toggle marker») установлено в 1 пробел.
- Ширина (Width): 4;
- Тип (Type): Пробелы;
- снят флажок «Отступ при помощи клавиши Tab» («Tab key indents»).
- установлен флажок «Показывать индикаторы отступа» («Show indentation guides»);
- установлен флажок «Показывать пробелы» («Show white space»).
- Сохранение файлов (Saving Files):
- установлен флажок «Убирать лишние пробелы и табуляции» («Strip trailing spaces and tabs»);
- установлен флажок «Заменять табуляции пробелами» («Replace tabs with space»).
2.2.1.2.2.2. Включение и настройка модулей¶
В главном меню Geany выберите Инструменты -> Менеджер модулей (Tools -> Plugin Manager). Отметьте флажки у следующих модулей:
- Overview: отображает «мини-карту» документа;
- Авто-маркер (Auto-mark): подсвечивает текущее слово под курсором;
- Дерево файлов (TreeBrowser): показывает дерево файлов на боковой панели слева;
- Дополнения (Addons): маленькие удобства, например, панель задач, обрамление выделенного текста и т.д.
Для настройки модулей выберите в главном меню команду Правка -> Настройка модулей (Edit -> Plugin Preferences).
- вкладка Дополнения (Addons):
- установите флажок «Удалять пустые строки в конце файла при сохранении» («Strip trailing blank lines»).
2.2.1.2.2.3. Автоматическая проверка заданий и PEP8¶
Для проверки и соответствия стандарту оформления PEP 8 создайте новый файл с расширением ‘.py’ , после чего откройте настройки сборки в Geany Сборка -> Установить команды сборки (Build -> Set Build Commands) и проверьте, что команды установлены как на Рисунке 2.2.4 (обведено красным), где путь ../tests/ — относительный путь к валидатору test.py .

Рисунок 2.2.4 — Команды сборки Python ¶
После настройки используйте команды:
- F5: запуск программы на выполнение;
- PEP8 (или Lint) в меню Сборка: запуск проверки текущего файла на соответствие PEP8 с отображением возможных ошибок в окне сообщений красным цветом (данную проверку и устранение ошибок рекомендуется осуществлять регулярно);
- Проверить в меню Сборка: запуск автоматической проверки решенной задачи (см. пример: Цикл выполнения и защиты заданий ).
2.2.1.2.3. PyCharm¶
Для установки необходимо перейти на официальный сайт PyCharm и загрузить предложенный дистрибутив (Community Edition).
Главное окно PyCharm приведено на Рисунке 2.2.5; в Таблице 2.2.3 — краткое описание элементов интерфейса.

Рисунок 2.2.5 — Главное окно IDE PyCharm ¶
Таблица 2.2.3 — Элементы интерфейса главного окна PyCharm ¶
Назначение / Что можно найти?
Все доступные команды IDE
Список открытых файлов
Дерево файлов проекта
Набор кода с подсветкой синтаксиса и прочими удобствами
Удобное отображение структуры файла
Интерактивная консоль запуска программы
Информация о файле: кодировка, положение курсора в редакторе кода и т.д.
2.2.1.2.3.1. Запуск и автоматическая проверка заданий и PEP8¶
PyCharm автоматически проверяет код на соответствие стандарту PEP 8, используя подчеркивание в редакторе кода (Рисунок 2.2.6).

Рисунок 2.2.6 — Автоматическая проверка PEP8 в PyCharm ¶
Для быстрого запуска и проверки выполняемых заданий необходимо выполнить ряд настроек.
В главном меню PyCharm выберите File -> Settings и найдите в поиске меню External Tools (Рисунок 2.2.7).

Рисунок 2.2.7 — Окно добавления инструментов для запуска и проверки заданий ¶
Для возможности запуска задания добавьте (через кнопку +) возможность запуска программы (Рисунок 2.2.8) и нажмите OK.

Рисунок 2.2.8 — Команда запуска задания ¶
Аналогично добавьте возможность проверки задания (Рисунок 2.2.9) и нажмите OK, где путь ..\tests\test.py — относительный путь к валидатору test.py .

Рисунок 2.2.9 — Команда проверки задания ¶
Для быстрого запуска и проверки заданий также рекомендуется добавить горячие клавиши. В главном меню PyCharm выберите File -> Settings и найдите в поиске меню Keymap (Рисунок 2.2.10).

Рисунок 2.2.10 — Окно настройки сочетаний клавиш ¶
Для добавления сочетания клавиш:
- выделите строку с командой;
- вызовите контекстное меню и выберите пункт Add Keyboard Shortcut;
- в открывшемся окне нажмите горячую клавишу (F5 для запуска, F6 — для проверки) и нажмите OK;
- в случае предупреждения, что горячая клавиша уже занята, нажмите Remove (в дальнейшем сочетания можно будет сбросить к начальным настройкам при необходимости).
2.2.1.2.4. Сочетания клавиш¶
Некоторые полезные сочетания клавиш приведены в Таблице 2.2.4.
Таблица 2.2.4 — Некоторые сочетания клавиш в IDE ¶
Запуск автоматической проверки
Меню Сборка -> Проверить
Дублирование текущей строки
Ctrl + F , Ctrl + H
Ctrl + F , Ctrl + R
2.2.1.2.5. Дополнительные советы¶
Ряд проблем часто возникает при написании первых программ — используйте советы ниже для их решения.
Использование кириллицы и пробелов
Старайтесь избегать использования кириллицы и пробелов при наименовании имен файлов и идентификаторов в программе.
- Atom: щелкнуть в строке состояния на текущую кодировку файла и выбрать UTF-8,
- Geany: главное меню Документ -> Установить кодировку -> Юникод -> Юникод (UTF-8),
- PyCharm: щелкнуть в строке состояния на текущую кодировку файла и выбрать UTF-8
Совмещение пробелов и знаков табуляции
Python не позволяет использовать одновременно пробелы и знаки табуляции в качестве разделителей, выдавая ошибку
TabError: inconsistent use of tabs and spaces in indentation.Данную проблему можно решить, используя замену (Рисунок 2.2.11).

Рисунок 2.2.11 — Замена всех знаков табуляции на 4 пробела на примере Geany ¶
2.2.2. Написание программ¶
2.2.2.1. Python¶
Для запуска интерпретатора Python откройте терминал и введите команду python (или python3 ), после чего интерпретатор будет запущен и перейдет в интерактивный режим, ожидая ввода команд (Рисунок 2.2.12).

Рисунок 2.2.12 — Запуск интерпретатора Python ¶
После ввода команды ее необходимо подтвердить нажатием клавиши . При этом, если команда подразумевает возврат какого-либо результата, интерпретатор автоматически отобразит его в консоли (Рисунок 2.2.13).

Рисунок 2.2.13 — Ввод команд и отображение результата ¶
Введите в консоли по очереди команды, приведенные в Листинге 2.2.1. Комментарии вводить не обязательно. Один из возможных результатов выполнения приведен на Рисунке 2.2.14.
Листинг 2.2.1 — Пример программы на языке Python | скачать ¶
print("Решение кв. уравнения | ax^2 + bx + c = 0") a = int(input("a=")) # Вводим с клавиатуры целое число и b = int(input("b=")) # связываем с определенной переменной c = int(input("c=")) d = b**2 - 4*a*c # Рассчитываем дискриминант, [d] указывает на результат d # Отображаем полученное значение (только в интерактивной консоли!) # Выводим решение в зависимости от значения дискриминанта if d 0: print("Решений нет") elif d == 0: x = -b / (2*a) print("x =", x) else: x1 = (-b - d**0.5) / (2*a) x2 = (-b + d**0.5) / (2*a) print("x1 =", x1, " x2 =", x2)

Рисунок 2.2.14 — Результат ввода программы в интерактивном режиме ¶
Даже если не знать синтаксис Python, благодаря его «простоте», можно понять, что происходит в программе.
2.2.2.2. IDE¶
В случае, когда программу требуется сохранить и периодически изменять, удобнее будет работать в IDE.
2.2.2.2.1. Atom¶
Для создания и запуска программы необходимо выполнить нескольких шагов:
- Для создания файла выберите меню File -> New File (Ctrl + N).
- Сохраните файл с расширением ‘.py’ (например, ‘main.py’ ), используя меню File -> Save (Ctrl + S). Убедитесь, что кодировка файла установлена в UTF-8.
- Наберите текст программы из Листинга 2.2.1.
- Для запуска программы нажмите клавишу F5.
- Протестируйте работу программы, запустив ее несколько раз, введя различные входные данные.
- Проверьте, исправьте возможные стилевые ошибки (до исчезания соответствующего окна сообщений) и сохраните окончательный вариант программы (Рисунок 2.2.15).

Рисунок 2.2.15 — Работа в IDE Atom ¶
2.2.2.2.2. Geany¶
Для создания и запуска программы необходимо выполнить нескольких шагов:
- Для создания файла выберите меню Файл -> Создать (Ctrl + N).
- Сохраните файл с расширением ‘.py’ (например, ‘main.py’ ), используя меню Файл -> Сохранить (Ctrl + S). Убедитесь, что кодировка файла установлена в UTF-8.
- Наберите текст программы из Листинга 2.2.1.
- Для запуска программы нажмите клавишу F5 или кнопку Выполнить на панели инструментов.
- Протестируйте работу программы, запустив ее несколько раз, введя различные входные данные.
- Проверьте, исправьте возможные стилевые ошибки, выбрав меню Сборка -> PEP8 и сохраните окончательный вариант программы (Рисунок 2.2.16).

Рисунок 2.2.16 — Работа в IDE Geany ¶
2.2.2.2.3. PyCharm¶
PyCharm использует концепцию проектов, поэтому в первую очередь необходимо создать пустой проект, и, введя его название, нажать кнопку OK (Рисунок 2.2.17).

Рисунок 2.2.17 — Создание проекта IDE PyCharm ¶
После открытия проекта необходимо выполнить нескольких шагов:
- Для создания файла выберите меню File -> New (Alt + Ins).
- Выберите Python File и введите имя файла (например, ‘main.py’ ), после чего подтвердите создание нажатием кнопки OK.
- Наберите текст программы из Листинга 2.2.1.
- Для запуска программы нажмите клавишу F5.
- Протестируйте работу программы, запустив ее несколько раз, введя различные входные данные.
- Проверьте, исправьте возможные стилевые ошибки (до исчезания подчеркиваний в редакторе кода) и сохраните окончательный вариант программы (Рисунок 2.2.18).

Рисунок 2.2.18 — Работа в IDE PyCharm ¶
2.2.2.2.4. Автоматическая проверка заданий¶
Начиная с 3-й темы заключительным этапом решения задачи должна быть автоматическая проверка (клавиша F6 в Atom и PyCharm или меню Сборка -> Проверить в Geany). Подробнее см. раздел Выполнение практикума и самостоятельной работы .
2.2.3. Получение справочной информации¶
Исчерпывающая документация по языку программирования Python находится на официальном сайте в разделе документации или в папке Doc (куда был установлен Python). Воспользуйтесь поиском, когда необходимо найти описание неизвестной функции или ознакомиться с ее поведением (Рисунок 2.2.19).

Рисунок 2.2.19 — Поиск функции print() в онлайн-документации ¶
Еще одним (и возможно более простым) способом получения справочной информации является использование функции help() (Рисунок 2.2.20)

Рисунок 2.2.20 — Использование функции help() для получения справки ¶
Используя заготовку, сохраните как:
- desktop_python_terminal.png : скриншот рабочего стола с запущенным интерпретатором Python c указанием версии и набранной программой из Листинга 2.2.1;
- desktop_ide_terminal.png : скриншот рабочего стола с запущенной IDE (с набранной программой из Листинга 2.2.1), а также терминала с результатом запуска;
- task_02_02_01.py : файл с текстом программы из Листинга 2.2.1;
- help.png : скриншот с найденной справочной информацией для функции input() (используя используя функцию help() и официальный сайт с документацией).
Версия: 2024. Обновлено: 28.12.2023.
Python RegEx: практическое применение регулярок
Разберём регулярные выражения в Python, их синтаксис, популярные методы специального модуля re, а также попрактикуемся на задачах.
Рассмотрим регулярные выражения в Python, начиная синтаксисом и заканчивая примерами использования.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
- Основы регулярных выражений
- Регулярные выражения в Python
- Задачи
Основы регулярных выражений
Регулярками в Python называются шаблоны, которые используются для поиска соответствующего фрагмента текста и сопоставления символов.
Грубо говоря, у нас есть input-поле, в которое должен вводиться email-адрес. Но пока мы не зададим проверку валидности введённого email-адреса, в этой строке может оказаться совершенно любой набор символов, а нам это не нужно.
Чтобы выявить ошибку при вводе некорректного адреса электронной почты, можно использовать следующее регулярное выражение:
r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$'По сути, наш шаблон — это набор символов, который проверяет строку на соответствие заданному правилу. Давайте разберёмся, как это работает.
Синтаксис RegEx
Синтаксис у регулярок необычный. Символы могут быть как буквами или цифрами, так и метасимволами, которые задают шаблон строки:
Также есть дополнительные конструкции, которые позволяют сокращать регулярные выражения:
- \d — соответствует любой одной цифре и заменяет собой выражение [0-9];
- \D — исключает все цифры и заменяет [^0-9];
- \w — заменяет любую цифру, букву, а также знак нижнего подчёркивания;
- \W — любой символ кроме латиницы, цифр или нижнего подчёркивания;
- \s — соответствует любому пробельному символу;
- \S — описывает любой непробельный символ.
Для чего используются регулярные выражения
- для определения нужного формата, например телефонного номера или email-адреса;
- для разбивки строк на подстроки;
- для поиска, замены и извлечения символов;
- для быстрого выполнения нетривиальных операций.
Синтаксис таких выражений в основном стандартизирован, так что вам следует понять их лишь раз, чтобы использовать в любом языке программирования.
Примечание Не стоит забывать, что регулярные выражения не всегда оптимальны, и для простых операций часто достаточно встроенных в Python функций.
Хотите узнать больше? Обратите внимание на статью о регулярках для новичков.
Регулярные выражения в Python
В Python для работы с регулярками есть модуль re . Его нужно просто импортировать:
import reА вот наиболее популярные методы, которые предоставляет модуль:
- re.match()
- re.search()
- re.findall()
- re.split()
- re.sub()
- re.compile()
Рассмотрим каждый из них подробнее.
re.match(pattern, string)
Этот метод ищет по заданному шаблону в начале строки. Например, если мы вызовем метод match() на строке «AV Analytics AV» с шаблоном «AV», то он завершится успешно. Но если мы будем искать «Analytics», то результат будет отрицательный:
import re result = re.match(r'AV', 'AV Analytics Vidhya AV') print result Результат:
Искомая подстрока найдена. Чтобы вывести её содержимое, применим метод group() (мы используем «r» перед строкой шаблона, чтобы показать, что это «сырая» строка в Python):
result = re.match(r'AV', 'AV Analytics Vidhya AV') print result.group(0) Результат: AVТеперь попробуем найти «Analytics» в данной строке. Поскольку строка начинается на «AV», метод вернет None :
result = re.match(r'Analytics', 'AV Analytics Vidhya AV') print result Результат: NoneТакже есть методы start() и end() для того, чтобы узнать начальную и конечную позицию найденной строки.
result = re.match(r'AV', 'AV Analytics Vidhya AV') print result.start() print result.end() Результат: 0 2Эти методы иногда очень полезны для работы со строками.
re.search(pattern, string)
Метод похож на match() , но ищет не только в начале строки. В отличие от предыдущего, search() вернёт объект, если мы попытаемся найти «Analytics»:
result = re.search(r'Analytics', 'AV Analytics Vidhya AV') print result.group(0) Результат: AnalyticsМетод search() ищет по всей строке, но возвращает только первое найденное совпадение.
re.findall(pattern, string)
Возвращает список всех найденных совпадений. У метода findall() нет ограничений на поиск в начале или конце строки. Если мы будем искать «AV» в нашей строке, он вернет все вхождения «AV». Для поиска рекомендуется использовать именно findall() , так как он может работать и как re.search() , и как re.match() .
result = re.findall(r'AV', 'AV Analytics Vidhya AV') print result Результат: ['AV', 'AV']re.split(pattern, string, [maxsplit=0])
Этот метод разделяет строку по заданному шаблону.
result = re.split(r'y', 'Analytics') print result Результат: ['Anal', 'tics']В примере мы разделили слово «Analytics» по букве «y». Метод split() принимает также аргумент maxsplit со значением по умолчанию, равным 0. В данном случае он разделит строку столько раз, сколько возможно, но если указать этот аргумент, то разделение будет произведено не более указанного количества раз. Давайте посмотрим на примеры Python RegEx:
result = re.split(r'i', 'Analytics Vidhya') print result Результат: ['Analyt', 'cs V', 'dhya'] # все возможные участки.result = re.split(r'i', 'Analytics Vidhya',maxsplit=1) print result Результат: ['Analyt', 'cs Vidhya']Мы установили параметр maxsplit равным 1, и в результате строка была разделена на две части вместо трех.
re.sub(pattern, repl, string)
Ищет шаблон в строке и заменяет его на указанную подстроку. Если шаблон не найден, строка остается неизменной.
result = re.sub(r'India', 'the World', 'AV is largest Analytics community of India') print result Результат: 'AV is largest Analytics community of the World're.compile(pattern, repl, string)
Мы можем собрать регулярное выражение в отдельный объект, который может быть использован для поиска. Это также избавляет от переписывания одного и того же выражения.
pattern = re.compile('AV') result = pattern.findall('AV Analytics Vidhya AV') print result result2 = pattern.findall('AV is largest analytics community of India') print result2 Результат: ['AV', 'AV'] ['AV']До сих пор мы рассматривали поиск определенной последовательности символов. Но что, если у нас нет определенного шаблона, и нам надо вернуть набор символов из строки, отвечающий определенным правилам? Такая задача часто стоит при извлечении информации из строк. Это можно сделать, написав выражение с использованием специальных символов. Вот наиболее часто используемые из них:
Больше информации по специальным символам можно найти в документации для регулярных выражений в Python 3.
Перейдём к практическому применению Python регулярных выражений и рассмотрим примеры.
Задачи
Вернуть первое слово из строки
Сначала попробуем вытащить каждый символ (используя . )
result = re.findall(r'.', 'AV is largest Analytics community of India') print result Результат: ['A', 'V', ' ', 'i', 's', ' ', 'l', 'a', 'r', 'g', 'e', 's', 't', ' ', 'A', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', ' ', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', ' ', 'o', 'f', ' ', 'I', 'n', 'd', 'i', 'a']Для того, чтобы в конечный результат не попал пробел, используем вместо . \w .
result = re.findall(r'\w', 'AV is largest Analytics community of India') print result Результат: ['A', 'V', 'i', 's', 'l', 'a', 'r', 'g', 'e', 's', 't', 'A', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', 'o', 'f', 'I', 'n', 'd', 'i', 'a']Теперь попробуем достать каждое слово (используя * или + )
result = re.findall(r'\w*', 'AV is largest Analytics community of India') print result Результат: ['AV', '', 'is', '', 'largest', '', 'Analytics', '', 'community', '', 'of', '', 'India', '']И снова в результат попали пробелы, так как * означает «ноль или более символов». Для того, чтобы их убрать, используем + :
result = re.findall(r'\w+', 'AV is largest Analytics community of India') print result Результат: ['AV', 'is', 'largest', 'Analytics', 'community', 'of', 'India']Теперь вытащим первое слово, используя ^ :
result = re.findall(r'^\w+', 'AV is largest Analytics community of India') print result Результат: ['AV']Если мы используем $ вместо ^ , то мы получим последнее слово, а не первое:
result = re.findall(r'\w+$', 'AV is largest Analytics community of India') print result Результат: [‘India’]Вернуть первые два символа каждого слова
Вариант 1: используя \w , вытащить два последовательных символа, кроме пробельных, из каждого слова:
result = re.findall(r'\w\w', 'AV is largest Analytics community of India') print result Результат: ['AV', 'is', 'la', 'rg', 'es', 'An', 'al', 'yt', 'ic', 'co', 'mm', 'un', 'it', 'of', 'In', 'di']Вариант 2: вытащить два последовательных символа, используя символ границы слова ( \b ):
result = re.findall(r'\b\w.', 'AV is largest Analytics community of India') print result Результат: ['AV', 'is', 'la', 'An', 'co', 'of', 'In']Вернуть домены из списка email-адресов
Сначала вернём все символы после «@»:
result = re.findall(r'@\w+', 'abc.test@gmail.com, xyz@test.in, test.first@analyticsvidhya.com, first.test@rest.biz') print result Результат: ['@gmail', '@test', '@analyticsvidhya', '@rest']Как видим, части «.com», «.in» и т. д. не попали в результат. Изменим наш код:
result = re.findall(r'@\w+.\w+', 'abc.test@gmail.com, xyz@test.in, test.first@analyticsvidhya.com, first.test@rest.biz') print result Результат: ['@gmail.com', '@test.in', '@analyticsvidhya.com', '@rest.biz']Второй вариант — вытащить только домен верхнего уровня, используя группировку — ( ) :
result = re.findall(r'@\w+.(\w+)', 'abc.test@gmail.com, xyz@test.in, test.first@analyticsvidhya.com, first.test@rest.biz') print result Результат: ['com', 'in', 'com', 'biz']Извлечь дату из строки
Используем \d для извлечения цифр.
result = re.findall(r'\d-\d-\d', 'Amit 34-3456 12-05-2007, XYZ 56-4532 11-11-2011, ABC 67-8945 12-01-2009') print result Результат: ['12-05-2007', '11-11-2011', '12-01-2009']Для извлечения только года нам опять помогут скобки:
result = re.findall(r'\d-\d-(\d)', 'Amit 34-3456 12-05-2007, XYZ 56-4532 11-11-2011, ABC 67-8945 12-01-2009') print result Результат: ['2007', '2011', '2009']Извлечь слова, начинающиеся на гласную
Для начала вернем все слова:
result = re.findall(r'\w+', 'AV is largest Analytics community of India') print result Результат: ['AV', 'is', 'largest', 'Analytics', 'community', 'of', 'India']А теперь — только те, которые начинаются на определенные буквы (используя [] ):
result = re.findall(r'[aeiouAEIOU]\w+', 'AV is largest Analytics community of India') print result Результат: ['AV', 'is', 'argest', 'Analytics', 'ommunity', 'of', 'India']Выше мы видим обрезанные слова «argest» и «ommunity». Для того, чтобы убрать их, используем \b для обозначения границы слова:
result = re.findall(r'\b[aeiouAEIOU]\w+', 'AV is largest Analytics community of India') print result Результат: ['AV', 'is', 'Analytics', 'of', 'India']Также мы можем использовать ^ внутри квадратных скобок для инвертирования группы:
result = re.findall(r'\b[^aeiouAEIOU]\w+', 'AV is largest Analytics community of India') print result Результат: [' is', ' largest', ' Analytics', ' community', ' of', ' India']В результат попали слова, «начинающиеся» с пробела. Уберем их, включив пробел в диапазон в квадратных скобках:
result = re.findall(r'\b[^aeiouAEIOU ]\w+', 'AV is largest Analytics community of India') print result Результат: ['largest', 'community']Проверить формат телефонного номера
Номер должен быть длиной 10 знаков и начинаться с 8 или 9. Есть список телефонных номеров, и нужно проверить их, используя регулярки в Python:
li = ['9999999999', '999999-999', '99999x9999'] for val in li: if re.match(r'[8-9][0-9]', val) and len(val) == 10: print 'yes' else: print 'no' Результат: yes no noРазбить строку по нескольким разделителям
line = 'asdf fjdk;afed,fjek,asdf,foo' # String has multiple delimiters (";",","," "). result = re.split(r'[;,\s]', line) print result Результат: ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']Также мы можем использовать метод re.sub() для замены всех разделителей пробелами:
line = 'asdf fjdk;afed,fjek,asdf,foo' result = re.sub(r'[;,\s]',' ', line) print result Результат: asdf fjdk afed fjek asdf fooИзвлечь информацию из html-файла
Допустим, нужно извлечь информацию из html-файла, заключенную между
и , кроме первого столбца с номером. Также будем считать, что html-код содержится в строке.
Пример содержимого html-файла:
1NoahEmma2LiamOlivia3MasonSophia4JacobIsabella5WilliamAva6EthanMia7MichaelEmilyС помощью регулярных выражений в Python это можно решить так (если поместить содержимое файла в переменную test_str ):
result = re.findall(r'\d([A-Z][A-Za-z]+)([A-Z][A-Za-z]+)', test_str) print result Результат: [('Noah', 'Emma'), ('Liam', 'Olivia'), ('Mason', 'Sophia'), ('Jacob', 'Isabella'), ('William', 'Ava'), ('Ethan', 'Mia'), ('Michael', 'Emily')]