首页 > 解决方案 >
使用Python生成html时如何附加多个文本行后跟单个标记

问题描述

我正在尝试使用 Python 的 py._xmlgen 的 html 类生成一个 html 对象。在这个 html 中,我想
在每行文本之后放置一个。

问题是在运行此代码时

from py._xmlgen import html

if __name__ == '__main__':
    br_standalone = html.br('some text between br tags')
    div_standalone = html.div('some more text between div tags')
    print(br_standalone)
    print(div_standalone)

    div_with_br = div_standalone
    div_with_br.append(br_standalone)
    print(div_with_br)

我得到这个输出:

<br>some text between br tags</br>
<div>some more text between div tags</div>
<div>some more text between div tags<br>some text between br tags</br></div>

如果您“运行代码片段”并检查下面的结果 html,您会看到关闭也呈现为第二个换行符。因此,对于每个 html.br,我得到 2 个换行符,而不是一个换行符。

我怎样才能让我使用的每个 html.br 的输出只有一个 br 标记?

标签: pythonhtml

解决方案


感谢user3080953的评论:“br 标签里面不应该有内容”,我修改了代码。

为了在文本之后获得单个 br 标签,请使用以下空标签:

br_standalone = html.br()

因此,当使用以下代码时:

from py._xmlgen import html

if __name__ == '__main__':
    div1 = html.div(class_='multiline_div')
    div1.append('text line #1')
    div1.append(html.br())
    div1.append('text line #2')
    div1.append(html.br())
    print(div1)

我得到以下html:

<div class="multiline_div">
   text line #1<br/>
   text line #2<br/>
</div>

请注意这里的另一个发现,您还可以附加到 html.div 纯文本,然后附加一个 br 标签,以在 div 标签内创建多行文本。


推荐阅读