У меня есть скрипт, который добавляет классы к тегам заголовков с помощью Beautiful Soup.
#!/usr/bin/env python
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('test.html'), 'html.parser')
heading_tags = soup.find_all('h1')
for tag in heading_tags:
tag['class'].append('new-class')
with open('test.html', 'w') as html_doc:
html_doc.write(soup.prettify())
Это хорошо работает, но я хотел бы сохранить пробелы в файле при записи в него. Например, этот шаблон Django:
<div class="something">
<div class="else">
<h1 class="original-class">Test</h1>
{% if request.foo == 'bar' %}
{{ line.get_something }}
{% else %}
{{ line.get_something_else }}
</div>
</div>
становится:
<div class="something">
<div class="else">
<h1 class="original-class new-class">
Test
</h1>
<!-- The formatting is off here: -->
{% if request.foo == 'bar' %}
{{ line.get_something }}
{% else %}
{{ line.get_something_else }}
</div>
</div>
Я также пытался использовать soup.encode()
вместо soup.prettify()
. Это сохраняет код шаблона Django, но выравнивает структуру HTML.
Можно ли сохранить пробелы исходного файла при записи в файл с помощью Beautiful Soup?