创建具有 'class' 属性的元素会引发语法错误

Creating an element with 'class' attribute throws a syntax error

当我尝试使用 lxml 模块执行此操作时:

div = etree.SubElement(body, "div", class="hmi")

我得到一个:

user@localhost:metk $ sudo python mbscan.py -r 192.168.0.0/24 --hmi
  File "mbscan.py", line 481
    div = etree.SubElement(body, "div", class="hmi")
                                            ^
SyntaxError: invalid syntax

因为 class 是为 Python 保留的关键字以供其他用途。即:

div = etree.SubElement(body, "div", hello="hmi")

工作正常。

我知道 lxml 中有另一个专门为 html 制作的引擎,但为了让我的 xmlhtml 报告生成器尽可能相似,我我想知道这里是否没有其他解决方法?

如何创建一个带有 class 属性的 xml 标签而不打乱 Python?

定义属性字典并将其作为 attrib 参数传递。

例如:

>>> from lxml.html import Element, tostring
>>> 
>>> div = Element("div", attrib={"class": "hmi"})
>>> 
>>> print(tostring(div))
<div class="hmi"></div>

请注意,我在这里使用 lxml.html,但同样的想法也适用于 etree