如何从XML文件导入特定数据并使用python 3.5进行处理?
我有一个包含以下代码的xml文件:如何从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 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)