Перейти к содержимому

Как убрать подчеркивание русских слов в pycharm

  • автор:

Проблема с проверкой орфографии в 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 комментарий

0ralo

Названия файлов принято давать не в кириллице — пиши на английском
Решения вопроса 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 — краткое описание элементов интерфейса.

_images/02_02_01.png

Рисунок 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) в графическом интерфейсе.

  1. Откройте терминал и введите команду:
apm install minimap linter-flake8 autocomplete-python atom-python-run intentions busy-signal linter linter-ui-default 
  1. В главном окне 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 .

_images/02_02_02.png

Рисунок 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 — краткое описание элементов интерфейса.

_images/02_02_03.png

Рисунок 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 .

    _images/02_02_04.png

    Рисунок 2.2.4 — Команды сборки Python ¶

    После настройки используйте команды:

    • F5: запуск программы на выполнение;
    • PEP8 (или Lint) в меню Сборка: запуск проверки текущего файла на соответствие PEP8 с отображением возможных ошибок в окне сообщений красным цветом (данную проверку и устранение ошибок рекомендуется осуществлять регулярно);
    • Проверить в меню Сборка: запуск автоматической проверки решенной задачи (см. пример: Цикл выполнения и защиты заданий ).
    2.2.1.2.3. PyCharm¶

    Для установки необходимо перейти на официальный сайт PyCharm и загрузить предложенный дистрибутив (Community Edition).

    Главное окно PyCharm приведено на Рисунке 2.2.5; в Таблице 2.2.3 — краткое описание элементов интерфейса.

    _images/02_02_05.png

    Рисунок 2.2.5 — Главное окно IDE PyCharm ¶

    Таблица 2.2.3 — Элементы интерфейса главного окна PyCharm ¶

    Назначение / Что можно найти?

    Все доступные команды IDE

    Список открытых файлов

    Дерево файлов проекта

    Набор кода с подсветкой синтаксиса и прочими удобствами

    Удобное отображение структуры файла

    Интерактивная консоль запуска программы

    Информация о файле: кодировка, положение курсора в редакторе кода и т.д.

    2.2.1.2.3.1. Запуск и автоматическая проверка заданий и PEP8¶

    PyCharm автоматически проверяет код на соответствие стандарту PEP 8, используя подчеркивание в редакторе кода (Рисунок 2.2.6).

    _images/02_02_06.png

    Рисунок 2.2.6 — Автоматическая проверка PEP8 в PyCharm ¶

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

    В главном меню PyCharm выберите File -> Settings и найдите в поиске меню External Tools (Рисунок 2.2.7).

    _images/02_02_07.png

    Рисунок 2.2.7 — Окно добавления инструментов для запуска и проверки заданий ¶

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

    _images/02_02_08.png

    Рисунок 2.2.8 — Команда запуска задания ¶

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

    _images/02_02_09.png

    Рисунок 2.2.9 — Команда проверки задания ¶

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

    _images/02_02_10.png

    Рисунок 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).

    _images/02_02_11.png

    Рисунок 2.2.11 — Замена всех знаков табуляции на 4 пробела на примере Geany ¶

    2.2.2. Написание программ¶

    2.2.2.1. Python¶

    Для запуска интерпретатора Python откройте терминал и введите команду python (или python3 ), после чего интерпретатор будет запущен и перейдет в интерактивный режим, ожидая ввода команд (Рисунок 2.2.12).

    _images/02_02_12.png

    Рисунок 2.2.12 — Запуск интерпретатора Python ¶

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

    _images/02_02_13.png

    Рисунок 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) 

    _images/02_02_14.png

    Рисунок 2.2.14 — Результат ввода программы в интерактивном режиме ¶

    Даже если не знать синтаксис Python, благодаря его «простоте», можно понять, что происходит в программе.

    2.2.2.2. IDE¶

    В случае, когда программу требуется сохранить и периодически изменять, удобнее будет работать в IDE.

    2.2.2.2.1. Atom¶

    Для создания и запуска программы необходимо выполнить нескольких шагов:

    1. Для создания файла выберите меню File -> New File (Ctrl + N).
    2. Сохраните файл с расширением ‘.py’ (например, ‘main.py’ ), используя меню File -> Save (Ctrl + S). Убедитесь, что кодировка файла установлена в UTF-8.
    3. Наберите текст программы из Листинга 2.2.1.
    4. Для запуска программы нажмите клавишу F5.
    5. Протестируйте работу программы, запустив ее несколько раз, введя различные входные данные.
    6. Проверьте, исправьте возможные стилевые ошибки (до исчезания соответствующего окна сообщений) и сохраните окончательный вариант программы (Рисунок 2.2.15).

    _images/02_02_15.png

    Рисунок 2.2.15 — Работа в IDE Atom ¶

    2.2.2.2.2. Geany¶

    Для создания и запуска программы необходимо выполнить нескольких шагов:

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

    _images/02_02_16.png

    Рисунок 2.2.16 — Работа в IDE Geany ¶

    2.2.2.2.3. PyCharm¶

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

    _images/02_02_17.png

    Рисунок 2.2.17 — Создание проекта IDE PyCharm ¶

    После открытия проекта необходимо выполнить нескольких шагов:

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

    _images/02_02_18.png

    Рисунок 2.2.18 — Работа в IDE PyCharm ¶

    2.2.2.2.4. Автоматическая проверка заданий¶

    Начиная с 3-й темы заключительным этапом решения задачи должна быть автоматическая проверка (клавиша F6 в Atom и PyCharm или меню Сборка -> Проверить в Geany). Подробнее см. раздел Выполнение практикума и самостоятельной работы .

    2.2.3. Получение справочной информации¶

    Исчерпывающая документация по языку программирования Python находится на официальном сайте в разделе документации или в папке Doc (куда был установлен Python). Воспользуйтесь поиском, когда необходимо найти описание неизвестной функции или ознакомиться с ее поведением (Рисунок 2.2.19).

    _images/02_02_19.png

    Рисунок 2.2.19 — Поиск функции print() в онлайн-документации ¶

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

    _images/02_02_20.png

    Рисунок 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, начиная синтаксисом и заканчивая примерами использования.

    Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.

    1. Основы регулярных выражений
    2. Регулярные выражения в Python
    3. Задачи

    Основы регулярных выражений

    Регулярками в Python называются шаблоны, которые используются для поиска соответствующего фрагмента текста и сопоставления символов.

    Грубо говоря, у нас есть input-поле, в которое должен вводиться email-адрес. Но пока мы не зададим проверку валидности введённого email-адреса, в этой строке может оказаться совершенно любой набор символов, а нам это не нужно.

    Чтобы выявить ошибку при вводе некорректного адреса электронной почты, можно использовать следующее регулярное выражение:

    r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$' 

    По сути, наш шаблон — это набор символов, который проверяет строку на соответствие заданному правилу. Давайте разберёмся, как это работает.

    Синтаксис RegEx

    Синтаксис у регулярок необычный. Символы могут быть как буквами или цифрами, так и метасимволами, которые задают шаблон строки:

    Python RegEx: практическое применение регулярок 1

    Также есть дополнительные конструкции, которые позволяют сокращать регулярные выражения:

    • \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 RegEx: практическое применение регулярок 2

    Больше информации по специальным символам можно найти в документации для регулярных выражений в 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')] 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *