如何从XML文件导入特定数据并使用python 3.5进行处理?

如何从XML文件导入特定数据并使用python 3.5进行处理?,python,xml,python-3.x,Python,Xml,Python 3.x,我有一个包含以下代码的xml文件: <?xml version="1.0" encoding="windows-1252" standalone="yes"?><!-- Generated by SMExport 4.88--><ROOT> <RECORDS> <METADATA><FIELDS><FIELD attrname="SALENUM" fieldtype="i4"/><FIELD attrna

我有一个包含以下代码的xml文件:

<?xml version="1.0" encoding="windows-1252" standalone="yes"?><!-- Generated by SMExport 4.88--><ROOT>  <RECORDS>
<METADATA><FIELDS><FIELD attrname="SALENUM" fieldtype="i4"/><FIELD attrname="TIME" fieldtype="time"/><FIELD attrname="DATE" fieldtype="date"/><FIELD attrname="AMOUNT" fieldtype="r8" SUBTYPE="Money"/></FIELDS><PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="1033"/></METADATA>
  <RECORD>
    <ROW
      SALENUM="1"
      TIME="125108"
      DATE="20160122"
      AMOUNT="22.9"
    />
  </RECORD>
  <RECORD>
    <ROW
      SALENUM="2"
      TIME="125243"
      DATE="20160122"
      AMOUNT="22.9"
    />
  </RECORD>

还有很多其他的记录

问题:导入此数据并用python处理它的最简单方法是什么?我正在尝试使用xml.etree.ElementTree,最后我想做的是将销售价格相加,并将该信息存储在一个变量中

有什么想法吗?

用于定位
记录
元素中的
元素,并访问
金额
属性。完整示例:

import xml.etree.ElementTree as ET

data = """<?xml version="1.0" encoding="windows-1252" standalone="yes"?><!-- Generated by SMExport 4.88--><ROOT>  <RECORDS>
<METADATA><FIELDS><FIELD attrname="SALENUM" fieldtype="i4"/><FIELD attrname="TIME" fieldtype="time"/><FIELD attrname="DATE" fieldtype="date"/><FIELD attrname="AMOUNT" fieldtype="r8" SUBTYPE="Money"/></FIELDS><PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="1033"/></METADATA>
  <RECORD>
    <ROW
      SALENUM="1"
      TIME="125108"
      DATE="20160122"
      AMOUNT="22.9"
    />
  </RECORD>
  <RECORD>
    <ROW
      SALENUM="2"
      TIME="125243"
      DATE="20160122"
      AMOUNT="22.9"
    />
  </RECORD>
</RECORDS>
</ROOT>"""

root = ET.fromstring(data)
amounts = [float(row.attrib["AMOUNT"]) for row in root.findall(".//RECORD/ROW")]
print(amounts)
然后,您可以使用内置的
sum()。完整示例:

import xml.etree.ElementTree as ET

data = """<?xml version="1.0" encoding="windows-1252" standalone="yes"?><!-- Generated by SMExport 4.88--><ROOT>  <RECORDS>
<METADATA><FIELDS><FIELD attrname="SALENUM" fieldtype="i4"/><FIELD attrname="TIME" fieldtype="time"/><FIELD attrname="DATE" fieldtype="date"/><FIELD attrname="AMOUNT" fieldtype="r8" SUBTYPE="Money"/></FIELDS><PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="1033"/></METADATA>
  <RECORD>
    <ROW
      SALENUM="1"
      TIME="125108"
      DATE="20160122"
      AMOUNT="22.9"
    />
  </RECORD>
  <RECORD>
    <ROW
      SALENUM="2"
      TIME="125243"
      DATE="20160122"
      AMOUNT="22.9"
    />
  </RECORD>
</RECORDS>
</ROOT>"""

root = ET.fromstring(data)
amounts = [float(row.attrib["AMOUNT"]) for row in root.findall(".//RECORD/ROW")]
print(amounts)
然后,您可以使用内置的
sum()
将金额相加:
sum(amounts)