Задание №10 — Поиск слова в тексте
C помощью текстового редактора определите, сколько раз встречается сочетание букв «по» или «По» только в составе других слов, в том числе в сложных словах, соединённых дефисом, но не как отдельное слово, в тексте главы III повести А.И. Куприна «Поединок». В ответе укажите только число.
Правильный ответ
106
Пояснение
Решение:
Текст дан в пяти форматах — открываем любой из них в текстовом редакторе. Считать нужно только по главе III, поэтому выделяем фрагмент от заголовка «III» до заголовка «IV» (удобно скопировать главу в новый документ).
Требуются вхождения сочетания букв, которые не являются отдельным словом, поэтому действуем в два шага.
- Ищем «по» с выключенным «Учитывать регистр» и выключенным «Только слово целиком» — все вхождения сочетания букв в главе: 114.
- Тот же поиск с включённым «Только слово целиком» — редактор насчитает 11 совпадений: .
Но здесь есть ловушка. Дефис редактор считает границей слова, поэтому в эти 11 «отдельных слов» он записал и начала сложных слов, написанных через дефис: «по-французски», «по-видимому», «по-детски» — 3 случая. По условию сложные слова с дефисом надо учитывать как вхождения в составе других слов, значит, эти 3 случая надо вернуть обратно:
.
(Слова «почему-то» и «пошло-игривым» дополнительно учитывать не нужно: в них «по» и так стоит внутри части слова, редактор их отдельным словом не посчитал.)
Надёжнее посчитать программой — здесь дефис явно объявлен частью слова:
import re
text = open('glava3.txt', encoding='utf-8').read()
bukvy = '[0-9A-Za-zА-Яа-яЁё-]'
vsego = len(re.findall('[пП]о', text))
otdelno = len(re.findall('(?<!' + bukvy + ')[пП]о(?!' + bukvy + ')', text))
print(vsego - otdelno)Программа печатает 106.Ответ: 106