Задание №10 — Поиск слова в тексте
Определите, сколько раз в тексте главы II повести А.И. Куприна «Поединок» встречается сочетание букв «все» или «Все» только в составе других слов, но не как отдельное слово. В ответе укажите только число.
Правильный ответ
9
Пояснение
Решение:
Считать нужно только те вхождения буквосочетания «все», которые стоят внутри других слов — «всех», «всего», «всегда», «всем», «совсем», «вовсе» и т. п., — а самостоятельное слово «все» из подсчёта исключается. Кроме того, искать надо не по всей повести, а только в главе II, то есть во фрагменте между заголовками «II» и «III».
В текстовом редакторе задача решается двумя поисками по выделенному фрагменту главы: сначала обычный поиск «все» (прописных «ВСЕ» в тексте нет, поэтому регистр можно не учитывать) — он даёт 17 вхождений; затем тот же поиск с флагом «Только слово целиком» — он даёт 8 вхождений. Разность и есть искомое количество.
То же самое короче делается программой: вырезаем главу II и для каждого вхождения проверяем, стоит ли рядом с ним буква — тогда это часть другого слова.
import re
text = open('10.txt', encoding='cp1251').read()
glava = text[text.index('\nII\n'):text.index('\nIII\n')]
count = 0
for m in re.finditer('(?=все|Все)', glava):
i = m.start()
if glava[i - 1].isalpha() or glava[i + 3].isalpha():
count += 1
print(count)Найденные вхождения: «всех парах», «всего из пяти», «всегда подолгу», «как и всегда», «всего больнее», «совсем точно», «им всем», «для всех», «совсем один» — ровно девять.Ответ: 9