Проблемы с подсчетом количества глав, в котором встречается определенное слово (В Питоне)

maitay

Новичок
Пользователь
Сен 13, 2021
3
0
1
Добрый день!
Изначально задача следующая - дан текстовый файл txt, разбитый по словам, главы в нем разделяются строкой '[new chapter]').
Необходимо написать программу, которая посчитает количество глав, в котором встречается искомое слово.
Моя идея состояла в том, чтобы составить список из индексов, которым соответствует строка '[new chapter]' и далее написать цикл, считающий количество глав, в которых участвует искомое слово с помощью переменной counter.
С первой частью задачи справилась, дальше начались проблемы. Не понимаю как перебрать все индексы, в которых используется искомое слово (потому что в текущем коде берется тот индекс, когда слово встречается только первый раз. Сомневаюсь, что правильно написала в целом второй цикл, результат выдается, но некорректный:
Python:
def read_data():
    data = open('/Users/taisiamoiseenko/Desktop/MISIS/Python/war_peace_processed.txt', 'rt').read()
    return data.split('\n')

data = read_data()
target_word='князь'
indexes=[]
counter=0
for index,value in enumerate(data):
    if value=='[new chapter]':
        indexes.append(index)
for i in indexes:
    j=0
    if j<data.index(target_word)<i:
        j+=i
        i+=1
        counter+=1
print(counter)

Буду очень благодарна помощи и советам) спасибо заранее.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 670
477
83
выложите файл с текстом, если не сложно...
 

petrson

Новичок
Пользователь
Сен 22, 2021
2
0
1
Так бы грубо сделал бы : читаю файл построчно отмечаю если есть новая глава то ищу вхождение слова.
Наверно как то еще поизящней можно реализовать, но читать построчно мне кажется логичный подход.

Python:
target_word='князь'
new_chapter = False
count_chapter = 0
with open ('war_peace_processed.txt',r) as f:
    for line in f:
        if '[new chapter]' in line:
            new_chapter = True
        if new_chapter and target_word in line:
            count_chapter += 1
            new_chapter = False
 

Форум IT Специалистов