有没有办法使用 lxml 的 E-factory 动态创建标签?例如,我收到以下代码的语法错误:
E.BODY(
E.TABLE(
for row_num in range(len(ws.rows)):
row = ws.rows[row_num]
# create a tr tag
E.TR(
for cell_num in range(len(row)):
cell = row[cell_num]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
for row_num in range(len(ws.rows)):
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
为了创建多个子节点,传递多个位置或关键字参数。
工作示例:
from lxml.builder import ElementMaker
from lxml.html import tostring
E = ElementMaker()
body = E.BODY(
E.TABLE(
*[E.TR(
*[
E.TD("%s %s" % (row_num, col_num)) for col_num in range(3)
]
) for row_num in range(2)]
)
)
print tostring(body, pretty_print=True)
Run Code Online (Sandbox Code Playgroud)
印刷:
<BODY><TABLE>
<TR>
<TD>0 0</TD>
<TD>0 1</TD>
<TD>0 2</TD>
</TR>
<TR>
<TD>1 0</TD>
<TD>1 1</TD>
<TD>1 2</TD>
</TR>
</TABLE></BODY>
Run Code Online (Sandbox Code Playgroud)
作为旁注,据我所知,您想创建一个 HTML 文件,其中填充了来自已解析 excel 文件的数据。与其使用 制作元素lxml,不如使用jinja2或 之类的模板引擎更好、更轻松地解决它mako。