Цикл for не срабатывает полностью

В soder почему то добавляется test1 и цикл прерывается, несмотря на то, что есть ещё строки с <title> в начале.

with open('file', 'r', encoding='utf-8') as file:
    book = file.readlines()
    soder = {}
    for i in book:
        if i.startswith('<title>'):
            soder[book.index(i)] = book[book.index(i) + 1]

file

<title>
<p>test1</p>
</title>
<section>
<title>
<p><strong>test2</strong></p>
</title>

Ответы (1 шт):

Автор решения: Денис Степанов

Так book.index(i) будет всегда одно и тоже возвращать, первое вхождение. Тут либо использовать аргумент start, чтобы менять стартовую позицию поиска, либо просто сразу индекс брать.

with open(r'C:\Users\Deniska\Desktop\file.txt', 'r', encoding='utf-8') as file:
    book = file.readlines()
    soder = {}
    for index, value in enumerate(book):
        if value.startswith('<title>'):
            soder[index] = book[index + 1]
→ Ссылка