首页 > 解决方案 > 如何在 yattag 中添加提取的 html?

问题描述

我正在尝试通过 yattag 创建 html。唯一的问题是,我从另一个 html 文件中使用的头文件,所以我读取了该文件并尝试将其作为标题插入。这是问题所在。虽然我传递了未转义的 html 字符串,但 yattag 将其转义。也就是说,它&lt;在添加到 html 字符串时将 '<' 转换为。

MWE:

from yattag import Doc, indent
import html 
doc, tag, text = Doc().tagtext()


h = open(nbheader_template, 'r')
h_content= h.read()
h_content = html.unescape(h_content)

doc.asis('<!DOCTYPE html>')
with tag('html'):

    # insert dummy head
    with tag('head'):
        text(h_content)  # just some dummy text to replace later - workaround for now

    with tag('body'):
        # insert as many divs as no of files
        for i in range(counter):
            with tag('div', id = 'divID_'+ str(1)):
                text('Div Page: ' + str(i))

result = indent(doc.getvalue())



# inject raw head - dirty workaround as yattag not doing it
# result = result.replace('<head>headtext</head>',h_content)

with open('test.html', "w") as file:
    file.write(result)

输出:
在此处输入图像描述

上下文:我正在尝试将多个 jupyter python 笔记本合并到一个 html 中,这就是为什么重标头。可以在此处找到标头内容 (nbheader_template)

标签: pythonhtmlpython-3.xbeautifulsoupyattag

解决方案


如果你想防止转义,你必须使用doc.asis而不是text.

asis 方法将一个字符串附加到文档中,没有任何形式的转义。

另请参阅文档


推荐阅读