gpt4 book ai didi

Python lxml 防止小于 < 或大于 > 被转换为 < 和 >

转载 作者:行者123 更新时间:2023-12-01 01:52:06 24 4
gpt4 key购买 nike

我正在使用 lxml 生成一个大型 XML 文件。文件中使用的标签之一是“lambda”,因此我无法像通常那样定义它。 (不,我无法更改标签的名称)

代码:

import lxml.etree as ETree
import lxml.builder as lxmlBuilder

E = lxmlBuilder.ElementMaker()
root = E.root
lbd = E.lambda #error since lambda is reserved

myTree = root(
lbd('1')
)

print ETree.tostring(myTree, pretty_print=True)

预期结果:

<root>
<lambda>1</lambda>
</root>

既然是这种情况,我只想手动输入“lambda”标签。但是,当我尝试执行此操作时,“lambda”周围的“小于”或“大于”符号将转换为 < 和 >。代码:

E = lxmlBuilder.ElementMaker()
root = E.root
lbd = "<lambda>%f</lambda>" % 1 #by hand

myTree = root(
lbd
)

print ETree.tostring(myTree, pretty_print=True)

结果:

<root>
&lt;lambda&gt;1.0000&lt;/lambda&gt;
</root>

如何防止 < 和 > 符号被这样转换?

最佳答案

您可以使用lbd = getattr(E, 'lambda')代替lbd = E.lambda来克服保留关键字带来的限制。

>>> import lxml.etree as ETree
>>> import lxml.builder as lxmlBuilder
>>> E = lxmlBuilder.ElementMaker()
>>> root = E.root
>>> lbd = getattr(E, 'lambda')
>>> myTree = root(lbd('1'))
>>> ETree.tostring(myTree, pretty_print=True)
b'<root>\n <lambda>1</lambda>\n</root>\n'

关于Python lxml 防止小于 < 或大于 > 被转换为 &lt 和 &gt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com