Python 3.x Python 2.7到3.6代码移植问题——将xml数据复制到列表
强调texhi,我目前正在将一段代码从Python2.7移植到Python3.6,该代码涉及将xml中的数据转储到一个列表中。代码如下所示Python 3.x Python 2.7到3.6代码移植问题——将xml数据复制到列表,python-3.x,python-2.7,Python 3.x,Python 2.7,强调texhi,我目前正在将一段代码从Python2.7移植到Python3.6,该代码涉及将xml中的数据转储到一个列表中。代码如下所示 import os import xml.etree.ElementTree as ET regs_list = [] tree = ET.parse("test.xml") root = tree.getroot() for reg in root: regs_list.append(reg) for i in range(len
import os
import xml.etree.ElementTree as ET
regs_list = []
tree = ET.parse("test.xml")
root = tree.getroot()
for reg in root:
regs_list.append(reg)
for i in range(len(regs_list)):
print (regs_list[i].attrib["name"])
if not (regs_list[i].find("field") == None):
for regs_list[i].field in regs_list[i]:
print (regs_list[i].field.attrib["first_bit"])
XML如下所示
<register offset="0x4" width="4" defaultValue="0x100000" name="statuscommand" desc="STATUSCOMMAND- Status and Command ">
<field first_bit="30" last_bit="31" WH="ROOO" flask="0xc0000000" name="reserved0" desc=""/>
<field first_bit="29" last_bit="29" WH="1CWRH flask="0x20000000" name="rma" desc=""/>
<field first_bit="28" last_bit="28" WH="1CWRH flask="0x10000000" name="rta" desc=""/>
</register>
<register offset="0x8" width="4" defaultValue="0x8050100" name="reve" desc="REVCLASSCODE - Revision ID and Class Code">
<field first_bit="8" last_bit="31" WH="ROOO" flask="0xffffff00" name="class_codes" desc=""/>
<field first_bit="0" last_bit="7" WH="ROOO" flask="0xff" name="rid" desc=""/>
</register>
这段代码在Python2.7中运行得非常好,我们可以将父(寄存器)和子(字段)转储到列表regs_列表中,但是在3.6中我们得到一个错误,如下所示
import os
import xml.etree.ElementTree as ET
regs_list = []
tree = ET.parse("test.xml")
root = tree.getroot()
for reg in root:
regs_list.append(reg)
for i in range(len(regs_list)):
print (regs_list[i].attrib["name"])
if not (regs_list[i].find("field") == None):
for regs_list[i].field in regs_list[i]:
print (regs_list[i].field.attrib["first_bit"])
3.6产出”
用于注册表列表[i]。注册表列表[i]中的字段:
AttributeError:'xml.etree.ElementTree.Element'对象没有属性'field'
2.7产出
父级和子级已解析并转储到列表中,没有错误
在3.6和2.7中,xml.etree.ElementTree.Element和list的工作方式是否有差异?请注意,
用于regs_list[i]。regs_list[i]中的字段:
将覆盖regs_list[i]。字段
在迭代时使用regs_list[i]
中的后续值。您是否尝试过用于regs_list[i]中的字段
取而代之的是?感谢您的反馈,这里需要检查两点((1))这是否在2.7到3.6之间变化,当我返回regs_列表时,这个迭代在2.7((2))中工作,在py 2.7中,我能够返回寄存器(父项)和子项(字段),并且能够使用这个regslist[i].field.attrib(“第一位”),列表在这里的工作方式有什么不同吗?