【问题标题】:the .set() method is not in the xml.etree library for Python?.set() 方法不在 Python 的 xml.etree 库中?
【发布时间】:2011-06-13 18:27:53
【问题描述】:

正在使用 Python 创建包含一些数据的 XML 文件。我正在尝试将字典中的值设置为列表中的数据。我将制作多行,这就是我以这种方式引用每个值的原因。多谢你们。这是我的代码:

from xml.etree import ElementTree as ET

root = ET.Element("painter")
root.set('version', '1.0')
linenum = 0
pointnum = 0

smpl_data = [[[20,40],(0,0,1,1)],[[10,50],(0,0,1,1)],[[78,89],(0,0,1,1)]]

while linenum <= len(smpl_data): #smpl_data change to self.lines
    elem_line = ET.SubElement(root,"line" + str(linenum), attrib={"r": "1", "g": "2", "b": "3", "a": "4"})
    print elem_line
    print elem_line.attrib.get("r")                       
    print elem_line.attrib.set("r", "smpl_data[linenum][2]")  
    # I get an attribute error: 'dict' object has no  attribute 'set'

虽然文档中清楚地显示了...

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.set

感谢您的帮助。

【问题讨论】:

    标签: python xml xml.etree


    【解决方案1】:

    您正在调用Elementattrib 成员上的get()set()attrib 是一个普通的旧 Python 字典,它没有 set() 函数。您链接的文档适用于实际 Element 对象本身的 set() 函数。

    要在attrib 成员中设置一个值,您可以使用:

    elem_line.attrib['r'] = smpl_data[linenum][2]
    

    如果您想改用Element

    elem_line.get('r')
    elem_line.set('r', smpl_data[linenum][2])
    

    【讨论】:

    • 感谢这帮助了很多!我意识到我需要执行 smpl_data[linenum][1][0] 来访问值“r”,但是 elem_line.get("r") 和 elem_line.set("r", smpl_data...) 效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多