Задание 10 ЕГЭ по информатике. Поиск информации в документах

Учимся быстро находить нужные слова/формы в больших текстах: режим «только слово целиком», учёт регистра, регулярные выражения. Покажем, как сделать то же самое на Python.

Теория: что проверяется и что нужно знать

  • Базовый поиск: большинство редакторов ищут просто цепочку символов (подстроку).
  • Слово целиком: опция «Только слово целиком» исключает попадание «долги», «долгами» при поиске «долг».
  • Регистр: «С учётом регистра» отличает «Долг» от «долг».
  • LibreOffice Writer: Расширенный поиск поддерживает регулярные выражения (регекс). Это удобно для склонений/вариантов написания.

Где включить в LibreOffice Writer

  1. Ctrl+H (найти/заменить) → «Больше параметров».
  2. Отметить галочки: Только слово целиком, С учетом регистра (по необходимости), Регулярные выражения (если используем шаблон).

Инструменты и быстрые рецепты

LibreOffice Writer

  • Точное слово: включить «Только слово целиком»; «С учётом регистра» — по задаче.
  • Регулярные выражения: для наборов форм (склонений) — задать один шаблон.
  • Подсчёт: окно «Найти» показывает количество совпадений. Перепроверьте 2–3 первых/последних попадания.

Python (быстрый скрипт)

from pathlib import Path
import re

text = Path("input.txt").read_text(encoding="utf-8")
# пример универсального поиска по регулярке:
hits = re.findall(r"ВАШ_ШАБЛОН", text, flags=re.MULTILINE)
print(len(hits))

Полезные флаги: re.IGNORECASE (без учета регистра), re.MULTILINE (многострочный).

Задания

Задание 2 — точная форма слова

Условие: определить, сколько раз (без сносок) встречается слово долг или Долг в тексте романа «Евгений Онегин». Другие формы («долги», «долгами» и т. п.) не учитывать.

Решение в LibreOffice Writer

  1. Открыть файл в Writer → Ctrl+H → «Больше параметров».
  2. Включить Только слово целиком и С учетом регистра.
  3. Искать отдельно «долг» и «Долг», сложить результаты.
    Альтернатива с регекс (одним проходом): включить Регулярные выражения и поставить шаблон:
    \b(долг|Долг)\b
  4. Проверить, что совпадения не попадают в сноски (либо работать с чистым текстом без сносок).

Решение на Python

import re, sys, pathlib

p = pathlib.Path("onegin.txt").read_text(encoding="utf-8")
# ровно две формы: "долг" и "Долг", точное слово (границы слова):
hits = re.findall(r"\b(?:долг|Долг)\b", p, flags=re.MULTILINE)
print(len(hits))

Почему не просто lower()? Если привести всё к нижнему регистру и искать «долг» с границами, мы поймаем «ДОЛГ» тоже — а по условию требуются именно две формы. Жёсткая маска (долг|Долг) ровно это и делает.

Задание 2 — Передача данных (поиск всех форм существительного)

Условие (из презентации): в «Дубровском» посчитать все вхождения существительного застава в любом числе и падеже. Встречается ловушка: попадает глагол «заставить/заставите», его нужно исключить.

Решение в LibreOffice Writer

Склонения «застава»: застава, заставы, заставе, заставу, заставой/заставою, заставе, …; мн.ч.: заставы, застав, заставам, заставы, заставами, заставах.
Общая часть — застав, но это зацепляет «заставите». Используем белый список окончаний для существительного и регулярные выражения:

  1. Ctrl+H → «Больше параметров» → включить Регулярные выражения и С учетом регистра (по желанию).
  2. В поле «Найти» шаблон:
    \bзастав(а|ы|е|у|ой|ою|ам|ами|ах)\b
  3. Кнопка «Найти все» → количество найденных = ответ.

Решение на Python

import re, pathlib

text = pathlib.Path("dubrovskiy.txt").read_text(encoding="utf-8")

# Белый список падежных окончаний существительного «застава» (ед. и мн. число):
pattern = r"\bзастав(?:а|ы|е|у|ой|ою|ам|ами|ах)\b"
hits = re.findall(pattern, text, flags=re.IGNORECASE | re.MULTILINE)
print(len(hits))

Почему так? Регулярка «по стему» \bзастав\w* ловит и глаголы (заставить), поэтому используем список типичных существительных окончаний.

Частые ошибки и как их избежать

  • Лишние совпадения: включен «поиск подстроки» вместо «слово целиком» — проверь флажок.
  • Регистр: иногда важен (имена собственные) — проверь «С учетом регистра».
  • Сноски/примечания: в заданиях чаще «не считать» — работайте с чистым текстом или проверяйте контекст.
  • Регекс в LO: в Writer включить «Регулярные выражения»; граница слова — \b.
  • Python и Юникод: указывайте encoding="utf-8"; для границ слов по-русски \b работает с флагами по умолчанию (Unicode-aware).
Теория и примеры из презентации «Поиск информации в текстовом файле» (режим «слово целиком», «учёт регистра», практические кейсы с Пушкиным) дополнены рабочими шаблонами для LibreOffice и Python.

Задания для подготовки

Простой уровень

Средний уровень

Сложный уровень

Понравилась статья? Поделиться с друзьями:
Школа Виктора Комлева