Замена текста внутри html тегов с сохраняем структуры
Есть определенный текст в html. Надо без нарушения структуры тегов брать весь текст по порядку и определенным образом заменять его, после возвращать на тоже самое место.
some_html_text = '\
<aside>\
<h1>Заголовок</h1>\
<p>Далее обычный текст Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque vitae suscipit ad voluptas odio est ducimus ipsa assumenda dolor ipsam! Rem quibusdam perspiciatis quaerat amet ipsa minima ab obcaecati. Maiores!</p>\
<ul>\
<li>Обычные или необычные списки. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis atque amet molestias dolor, quaerat fugiat deserunt placeat neque perferendis quae, adipisci repellat vitae eligendi commodi optio temporibus voluptas fugit veniam.</li>\
<li>Обычные или необычные списки. Odit ratione repellendus sapiente cumque modi obcaecati sequi, voluptas officia maxime molestiae. Nobis praesentium cumque repellendus voluptatum dolorum est quidem, laudantium totam, quod adipisci quibusdam numquam et neque fugit tenetur?</li>\
<li>Обычные или необычные списки. Quis suscipit veniam optio vero rem obcaecati, quidem temporibus dolore ut sed debitis sint repellat id consequatur? Possimus nulla recusandae ex earum perferendis aspernatur eaque, impedit cumque nisi iusto perspiciatis.</li>\
<li>Обычные или необычные списки. Accusamus mollitia dolores expedita quo id ad, illo odit rerum, repellendus blanditiis laborum sequi sunt consequatur tempora totam. Nihil deleniti sed soluta eos blanditiis tempora eligendi excepturi quia in qui.</li>\
<li>Обычные или необычные списки. Voluptate quibusdam animi in atque soluta. Maxime dicta corrupti perspiciatis ducimus, quos fugiat reiciendis. Asperiores ipsa, voluptate sed, nam quas delectus velit tenetur minima rem blanditiis fugit, ab eos aliquid!</li>\
</ul>\
<aside>';
Я бы это все писал через регулярные выражения, но возможно есть решения проще, не хотелось бы изобретать велосипед.
Еще возникла мысль использовать BeautifulSoup , но, повторюсь, может я изобретаю велосипед. Python изучаю не так давно.
Спасибо.
UPD. Добавлено
Немного усложню задание что бы не было соблазна замену делать во всем some_html_text . Повторюсь, надо выдернуть весь текст и заменять текстовые блоки целиком на том месте откуда они брались.
some_html_text = '''
<aside>
<h1>Заголовок</h1>
<p>Далее обычный Заголовок текст Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque vitae suscipit ad voluptas odio est ducimus ipsa assumenda dolor ipsam! Rem quibusdam perspiciatis quaerat amet ipsa minima ab obcaecati. Maiores!</p>
<ul>
<li>Заголовок Обычные или необычные списки. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis atque amet molestias dolor, quaerat fugiat deserunt placeat neque perferendis quae, adipisci repellat vitae eligendi commodi optio temporibus voluptas fugit veniam.</li>
</ul> Тоже текст пусть и не правильно оформленный
</aside>
'''
блок
1 - Заголовок
2 - Далее обычный Заголовок текст Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque vitae suscipit ad voluptas odio est ducimus ipsa assumenda dolor ipsam! Rem quibusdam perspiciatis quaerat amet ipsa minima ab obcaecati. Maiores!
3 - Заголовок Обычные или необычные списки. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis atque amet molestias dolor, quaerat fugiat deserunt placeat neque perferendis quae, adipisci repellat vitae eligendi commodi optio temporibus voluptas fugit veniam.
4 - Тоже текст пусть и не правильно оформленный
Ответы (1 шт):
Распарсил через bs4 и поменял текст тегов li
Пример:
from bs4 import BeautifulSoup
some_html_text = '''
<aside>
<h1>Заголовок</h1>
<p>Далее обычный текст Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque vitae suscipit ad voluptas odio est ducimus ipsa assumenda dolor ipsam! Rem quibusdam perspiciatis quaerat amet ipsa minima ab obcaecati. Maiores!</p>
<ul>
<li>Обычные или необычные списки. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis atque amet molestias dolor, quaerat fugiat deserunt placeat neque perferendis quae, adipisci repellat vitae eligendi commodi optio temporibus voluptas fugit veniam.</li>
<li>Обычные или необычные списки. Odit ratione repellendus sapiente cumque modi obcaecati sequi, voluptas officia maxime molestiae. Nobis praesentium cumque repellendus voluptatum dolorum est quidem, laudantium totam, quod adipisci quibusdam numquam et neque fugit tenetur?</li>
<li>Обычные или необычные списки. Quis suscipit veniam optio vero rem obcaecati, quidem temporibus dolore ut sed debitis sint repellat id consequatur? Possimus nulla recusandae ex earum perferendis aspernatur eaque, impedit cumque nisi iusto perspiciatis.</li>
<li>Обычные или необычные списки. Accusamus mollitia dolores expedita quo id ad, illo odit rerum, repellendus blanditiis laborum sequi sunt consequatur tempora totam. Nihil deleniti sed soluta eos blanditiis tempora eligendi excepturi quia in qui.</li>
<li>Обычные или необычные списки. Voluptate quibusdam animi in atque soluta. Maxime dicta corrupti perspiciatis ducimus, quos fugiat reiciendis. Asperiores ipsa, voluptate sed, nam quas delectus velit tenetur minima rem blanditiis fugit, ab eos aliquid!</li>
</ul>
</aside>
'''
root = BeautifulSoup(some_html_text, 'html.parser')
for i, li in enumerate(root.select('li'), 1):
li.string = f'{i}. {li.text}'
print(root)
Результат:
<aside>
<h1>Заголовок</h1>
<p>Далее обычный текст Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque vitae suscipit ad voluptas odio est ducimus ipsa assumenda dolor ipsam! Rem quibusdam perspiciatis quaerat amet ipsa minima ab obcaecati. Maiores!</p>
<ul>
<li>1. Обычные или необычные списки. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis atque amet molestias dolor, quaerat fugiat deserunt placeat neque perferendis quae, adipisci repellat vitae eligendi commodi optio temporibus voluptas fugit veniam.</li>
<li>2. Обычные или необычные списки. Odit ratione repellendus sapiente cumque modi obcaecati sequi, voluptas officia maxime molestiae. Nobis praesentium cumque repellendus voluptatum dolorum est quidem, laudantium totam, quod adipisci quibusdam numquam et neque fugit tenetur?</li>
<li>3. Обычные или необычные списки. Quis suscipit veniam optio vero rem obcaecati, quidem temporibus dolore ut sed debitis sint repellat id consequatur? Possimus nulla recusandae ex earum perferendis aspernatur eaque, impedit cumque nisi iusto perspiciatis.</li>
<li>4. Обычные или необычные списки. Accusamus mollitia dolores expedita quo id ad, illo odit rerum, repellendus blanditiis laborum sequi sunt consequatur tempora totam. Nihil deleniti sed soluta eos blanditiis tempora eligendi excepturi quia in qui.</li>
<li>5. Обычные или необычные списки. Voluptate quibusdam animi in atque soluta. Maxime dicta corrupti perspiciatis ducimus, quos fugiat reiciendis. Asperiores ipsa, voluptate sed, nam quas delectus velit tenetur minima rem blanditiis fugit, ab eos aliquid!</li>
</ul>
</aside>