如何使用列表元素构建html正文

时间:2013-09-08 18:44:23

标签: python html

html_body = """\
<html>
<head>
</head>
<body>
<br>
<table border="1">
%s
</table>
</body>
</html>
""" % (html_content)

html_contents = [<tr><td>Name</td><td>id</td></tr> , <tr><td>Smith</td><td>1001</td></tr>]

我正在尝试从列表中获取html主体,以便可以通过电子邮件发送它。我怎样才能将html_content列表的所有元素放在上面的html_body中?更好的方式?

2 个答案:

答案 0 :(得分:1)

您可以使用join()加入列表中的字符串:

>>> html_contents = ['<tr><td>Name</td><td>id</td></tr>' , '<tr><td>Smith</td><td>1001</td></tr>']
>>> html_body = """\
... <html>
... <head>
... </head>
... <body>
... <br>
... <table border="1">
... %s
... </table>
... </body>
... </html>
... """ % ("".join(html_contents))
>>> print html_body
<html>
<head>
</head>
<body>
<br>
<table border="1">
<tr><td>Name</td><td>id</td></tr><tr><td>Smith</td><td>1001</td></tr>
</table>
</body>
</html>

答案 1 :(得分:0)

使用lxml,您可以像这样构建HTML:

import lxml.html as LH
import lxml.builder as builder
E = builder.E

page = (
    E.html(       # create an Element called "html"
        E.head(),
        E.body(
            E.br(),
            E.table(
                E.tr(
                    E.td("Name"),
                    E.td("id")
                ),
                E.tr(
                    E.td("Smith"),
                    E.td("1001")
                ),
                border="1")
        )
    )
)

print(LH.tostring(page, pretty_print=True))

产量

<html>
<head></head>
<body>
<br><table border="1">
<tr>
<td>Name</td>
<td>id</td>
</tr>
<tr>
<td>Smith</td>
<td>1001</td>
</tr>
</table>
</body>
</html>

这使得HTML的结构变得明显,并且您更有可能最终获得有效的HTML。