【发布时间】:2021-08-06 01:24:25
【问题描述】:
我正在尝试从 XML 文件中提取一些信息,并将其制成表格,如下图所示。我下面的代码几乎可以工作,但我被困在如何修复打印输出中出现的重复值(数据行)。下面我展示了当前输出、期望的输出、我到目前为止的代码和 xml 输入文件。感谢您的帮助。
- 红色的数据是向下填充的值,因为在代码中使用了
row.extend(...)。
Python 代码
import xml.etree.ElementTree as ET
import glob, os
import pandas as pd
filename = 'input.xml'
root = ET.parse(filename).getroot()
rows = []
columns = ['TC', 'LPP','LRP','LKTT','WQNT','ZZ','DFT','YY_TRWI','ZZ_TRWE']
for element in root.findall('.//NL/NW'):
tc = element.find('.//TC').text
llp = element.find('.//LPP').text
lrp = element.find('.//LRP').text
lktt = element.find('.//LKTT').text
wqnt = element.find('.//WQNT').text
for entry in root.findall('.//CEN4/GNR/RD/NR'):
row = []
zz = entry.find('.//ZZ').text
dft = entry.find('.//DFT').text
yy_trwi = getattr(entry.find('./SR/YY_TRWI'), 'text', None)
zz_trwe = getattr(entry.find('./SR/ZZ_TRWE'), 'text', None)
row.extend([tc,llp,lrp,lktt,wqnt,zz,dft,yy_trwi,zz_trwe])
rows.append(row)
df = pd.DataFrame(rows, columns=columns)
df
XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<vol-trf>
<MAINXZ123FileHeader>
<FT>XZ43</FT>
<SNDTDG>AURUYYY</SNDTDG>
</MAINXZ123FileHeader>
<ON>
<ORN>XYZ</ORN>
<CI>AUR</CI>
<NL>
<NW>
<TC>WEKP71</TC>
<ND>
<RIS>
<RI>
<CEN4>
<GNR>
<RD>
<NR>
<ZZ>403</ZZ>
<DFT>676</DFT>
</NR>
</RD>
<RD>
<NR>
<ZZ>419</ZZ>
<DFT>170</DFT>
<SR>
<YY_TRWI>4001</YY_TRWI>
<ZZ_TRWE>4015</ZZ_TRWE>
</SR>
</NR>
</RD>
<RD>
<NR>
<ZZ>429</ZZ>
<DFT>170</DFT>
<SR>
<YY_TRWI>5574</YY_TRWI>
<ZZ_TRWE>7614</ZZ_TRWE>
</SR>
</NR>
</RD>
</GNR>
</CEN4>
<CEN2>
<LPP>2079</LPP>
<LRP>531</LRP>
</CEN2>
<CEM>
<LKTT>4113</LKTT>
<WQNT>5106</WQNT>
</CEM>
</RI>
</RIS>
</ND>
</NW>
<NW>
<TC>AURX45</TC>
<ND>
<RIS>
<RI>
<CEN4>
<GNR>
<RD>
<NR>
<ZZ>31</ZZ>
<DFT>455</DFT>
</NR>
</RD>
<RD>
<NR>
<ZZ>31</ZZ>
<DFT>170</DFT>
<SR>
<YY_TRWI>123</YY_TRWI>
<ZZ_TRWE>883</ZZ_TRWE>
</SR>
</NR>
</RD>
<RD>
<NR>
<ZZ>33</ZZ>
<DFT>631</DFT>
<SR>
<YY_TRWI>324</YY_TRWI>
<ZZ_TRWE>545</ZZ_TRWE>
</SR>
</NR>
</RD>
</GNR>
</CEN4>
<CEN2>
<LPP>711</LPP>
<LRP>87</LRP>
</CEN2>
<CEM>
<LKTT>319</LKTT>
<WQNT>433</WQNT>
</CEM>
</RI>
</RIS>
</ND>
</NW>
</NL>
</ON>
</vol-trf>
【问题讨论】:
标签: python-3.x xml elementtree