gpt4 book ai didi

python - lxml属性顺序

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:42 24 4
gpt4 key购买 nike

如本题所述:

lxml preserves attributes order?

并采纳了@abarnet 的建议,我编写了以下代码行:

root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0")]), nsmap={'catalogocuentas':SATNS})

我明白了:

<catalogocuentas:Catalogo xmlns:catalogocuentas="http://www.sat.gob.mx/catalogocuentas" Ano="2014" Mes="02" TotalCtas="219" RFC="XXX010101XXX" Version="1.0"/>

这很好(它保留了所需的顺序),但是当我想添加缺少的信息时:

xmlns:xsi="link_2" xsi:schemaLocation="http://www.sat.gob.mx/catalogocuentas"

作为我的 xml 的一部分,然后我将此信息添加到我的 python 代码中:

attrib={location_attribute: 'http://www.sat.gob.mx/catalogocuentas'}

这样就变成了:

root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0")]), nsmap={'catalogocuentas':SATNS}, attrib={location_attribute: 'http://www.sat.gob.mx/catalogocuentas'})

我收到这个错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 2558, in lxml.etree.Element (src/lxml/lxml.etree.c:52829)
TypeError: Element() got multiple values for keyword argument 'attrib'

我该如何解决?

提前致谢!

最佳答案

问题是您向 Element() init 方法发送了两次相同的关键字参数。对于您的初始化,您的第二个参数被用作 attrib 关键字。在这种情况下,它是您的 OrderedDict(),它包含您的所有属性。然后您尝试再次提供它,这就是它遇到碰撞的地方。您可以通过以下两种方式之一解决此问题:

您可以将此属性添加到您的属性 OrderedDict() 中,如下所示:

root = ET.Element('{%s}Catalogo' % SATNS, OrderedDict([("Ano","2014"),("Mes","02"),("TotalCtas","219"),("RFC","XXX010101XXX"),("Version","1.0"),("location_attribute","http://www.sat.gob.mx/catalogocuentas")]), nsmap={'catalogocuentas':SATNS})

或者,您也可以通过以下方式将其添加到下一行:

root.attrib["location_attribute"] = "http://www.sat.gob.mx/catalogocuentas"

关于python - lxml属性顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533806/

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