Задача № 93
Определите, сколько раз в тексте главы II повести А.И. Куприна «Поединок» встречается сочетание букв «все» или «Все» только в составе других слов, но не как отдельное слово. В ответе укажите только число.
Решение
Обратите внимание, что в условии говорится только о второй главе. В самом документе глав больше.
Покажу два решения решения этой задачи: классическое в текстовом редакторе и с помощью языка программирования.
MS Word
Для решения с помощью текстового редактора нам подойдёт файл с расширением .doc или .docx. Скачиваем любой из двух файлов и открываем в ворде.
Далее нужно выбрать текст второй главы. Выделим его. Открываем вклдаку «Вид» и ставим галочку напротив пункта «Область навигации»
В открывшемся окне находим вторую главу и, кликнув правой кнопкой мыши, выбираем пункт «Выделить заголовок и содержимое». Копируем текст и вставляем в новый документ Ctrl + C > Ctrl + N > Ctrl + V
В панели «Область навигации» в поле поиска вводим слово все и записываем количество результатов. Мы нашли сколько всего раз встречается слово все без учета регистра.
Меняем параметры поиска. Кликаем по маленькой стрелки и выбираем пункт «Параметры»
В открывшемся окне устанавливаем галочку рядом с пунктом «Только слово целиком»
Воспользуемся поиском повторно и запишем результат
Вычислим ответ: 17 – 8 = 9
Python
Для решения на языке программирования подготовим тектовый файл с расширением .txt. Файл нужно разместить рядом со скриптом .py
Напишем программу
# импортируем библиотеки
import re
import fnmatch
# откроем файл и прочитаем его
file = open('10.txt').read()
# вычислим начало и окончание второй главы
start = file.index('II')
finish = file.index('III')
# оставим только вторую главу, все символы приведём к нижнему регистру
chapter = file[start:finish].lower()
# с помощью регулярного выражения удалим всё, кроме букв и пробелов
clean = re.sub('[^а-я ]', '', chapter)
# разделим текст на слова
words = clean.split()
# найдём все слова, которые содержат слово все
vse = fnmatch.filter(words, '*все*')
# удалим слова, которые целиком равны слову все
answer = [word for word in vse if word != 'все']
# выведем количество слов
print(len(answer))