Python 3.x Python 2.7到3.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

强调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(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(“第一位”),列表在这里的工作方式有什么不同吗?