我使用Beautiful Soup 4来解析和修改几个Angular模板(HTML文件)。使用prettify
函数将修改后的内容写回文件时,我遇到了一些问题。此问题与特殊字符有关,例如:>,<等等
我需要将HTML文件格式化为处理前的格式,而不将×
等字符串值转换为“×”,并且不将*ngIf="alarmCount > 0
等属性值转换为{{1 }}。
下面是一个示例HTML模板和三个内置output formatters(html,minimal,None)中每一个的Beautiful Soup输出。两者都没有提供所需的输出。还有一个选项可以将自定义格式化程序函数传递给prettify(),但由于这个自定义格式化程序不知道传递给它的字符串是属性值还是字符串值,我不确定它是否真的对此有用情况下。
对于如何处理此问题的任何建议表示赞赏。
*ngif="alarmCount > 0
格式化程序=“html”的结果:
from bs4 import BeautifulSoup
test_html = """
<div id="someId" (window:resize)="sizeChanged($event)">
<span *ngIf="alarmCount > 0">×</span>
</div>
"""
document = BeautifulSoup(test_html, "html.parser")
print(document.prettify(formatter="html"))
格式化程序结果=无:
<div (window:resize)="sizeChanged($event)" id="someId">
<span *ngif="alarmCount > 0">
×
</span>
</div>
格式化程序=“最小”的结果:
<div (window:resize)="sizeChanged($event)" id="someId">
<span *ngif="alarmCount > 0">
×
</span>
</div>