python 解析xml文件写入excel
本文目的是用python的ElementTree和xlwt解析xml文件并写入excel,在网上和官网看了一些示例,都是一些基本用法,简单例子,个人觉得不够实用,所以整理了此篇博客,把xml文件中的城市环境监测站点名称和代码,将数据提取保存到excel中。废话不多说直接上代码1.需要解析的datas.xml文件,由于文件内容比较多,所以只截取部分,需要提取的内容为Pointe...
·
本文目的是用python的ElementTree和xlwt解析xml文件并写入excel,在网上和官网看了一些示例,都是一些基本用法,简单例子,个人觉得不够实用,所以整理了此篇博客,把xml文件中的城市环境监测站点名称和代码,将数据提取保存到excel中。废话不多说直接上代码
1.需要解析的datas.xml文件,由于文件内容比较多,所以只截取部分,需要提取的内容为
Pointers/Images/Image/Name和Pointers/Images/Image/Url下的数据
如下所示
<?xml version="1.0" encoding="UTF-8"?>
<Result>
<City>
<Name>石家庄市</Name>
<DataTime>03/31 15:00</DataTime>
<AQI>107</AQI>
<Level>轻度污染</Level>
<Type>2</Type>
<LevelIndex>3</LevelIndex>
<MaxPoll>PM2.5</MaxPoll>
<Color>0xFF7E00</Color>
<Intro>易感人群症状有轻度加剧,健康人群出现刺激症状</Intro>
<Tips>儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼</Tips>
<ShowDetail>true</ShowDetail>
<Polls>
<Poll>
<Name>SO2</Name>
<Value>0.026</Value>
<Count>0</Count>
<IAQI>9</IAQI>
</Poll>
<Poll>
<Name>CO</Name>
<Value>1.55</Value>
<Count>0</Count>
<IAQI>16</IAQI>
</Poll>
<Poll>
<Name>NO2</Name>
<Value>0.034</Value>
<Count>0</Count>
<IAQI>17</IAQI>
</Poll>
<Poll>
<Name>O3-1H</Name>
<Value>0.062</Value>
<Count>0</Count>
<IAQI>20</IAQI>
</Poll>
<Poll>
<Name>O3-8H</Name>
<Value>0.036</Value>
<Count>0</Count>
<IAQI>0</IAQI>
</Poll>
<Poll>
<Name>PM2.5</Name>
<Value>0.08</Value>
<Count>0</Count>
<IAQI>107</IAQI>
</Poll>
<Poll>
<Name>PM10</Name>
<Value>0.128</Value>
<Count>0</Count>
<IAQI>89</IAQI>
</Poll>
</Polls>
<Images>
<Image>
<Name>市区西南高教</Name>
<Url>image/1300000102.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区世纪公园</Name>
<Url>image/1300000101.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区22中南校区</Name>
<Url>image/1300000103.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区职工医院</Name>
<Url>image/1300000104.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区人民会堂</Name>
<Url>image/1300000105.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区西北水源</Name>
<Url>image/1300000106.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区高新区</Name>
<Url>image/1300000107.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>市区封龙山</Name>
<Url>image/1300000113.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>井陉矿区区委大楼</Name>
<Url>image/1300000116.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>井陉矿区南寨小学</Name>
<Url>image/1300000199.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>井陉县气象局</Name>
<Url>image/1300000117.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>井陉县3502生活区</Name>
<Url>image/1300000192.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>正定联通公司</Name>
<Url>image/1300000127.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>正定县公安消防大队</Name>
<Url>image/1300000191.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>正定县党校</Name>
<Url>image/1300000190.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>栾城通讯公司</Name>
<Url>image/1300000118.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>栾城六中</Name>
<Url>image/1300000194.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>栾城区环保局</Name>
<Url>image/1300000193.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>行唐县委办公楼</Name>
<Url>image/1300000125.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>行唐启明中学</Name>
<Url>image/1300000189.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>灵寿供水</Name>
<Url>image/1300000124.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>灵寿县市场管理局</Name>
<Url>image/1300000188.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>高邑县政府</Name>
<Url>image/1300000120.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>高邑镇政府</Name>
<Url>image/1300000187.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>深泽供电局</Name>
<Url>image/1300000130.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>深泽华丽大楼</Name>
<Url>image/1300000186.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>赞皇县政府</Name>
<Url>image/1300000121.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>赞皇中学</Name>
<Url>image/1300000180.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>无极环保局</Name>
<Url>image/1300000129.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>无极卫计局</Name>
<Url>image/1300000179.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>平山冶河</Name>
<Url>image/1300000131.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>平山县县政府</Name>
<Url>image/1300000177.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>元氏住建局</Name>
<Url>image/1300000119.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>元氏县气象局</Name>
<Url>image/1300000176.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>赵县环保局</Name>
<Url>image/1300000133.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>赵县县政府</Name>
<Url>image/1300000178.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>赵县文广新局</Name>
<Url>image/1300000175.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>辛集市政府</Name>
<Url>image/1300000132.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>辛集采油五厂</Name>
<Url>image/1300000171.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>辛集城管大队</Name>
<Url>image/1300000170.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>藁城市环保局</Name>
<Url>image/1300000122.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>藁城实验学校</Name>
<Url>image/1300000197.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>藁城八中</Name>
<Url>image/1300000198.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>晋州博纳德</Name>
<Url>image/1300000123.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>晋州市人民政府</Name>
<Url>image/1300000174.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name></Name>
<Url>image/.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>新乐市委东楼</Name>
<Url>image/1300000126.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>新乐实验学校</Name>
<Url>image/1300000173.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>新乐市卫生局</Name>
<Url>image/1300000172.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>鹿泉一中</Name>
<Url>image/1300000128.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>鹿泉住建局</Name>
<Url>image/1300000196.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
<Image>
<Name>鹿泉区环保局</Name>
<Url>image/1300000195.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
</Images>
<Pointers>
<Pointer>
<City>石家庄市</City>
<Region>桥西区</Region>
<Name>市区西南高教</Name>
<DataTime>03/31 15:00</DataTime>
<AQI>108</AQI>
<Level>轻度污染</Level>
<LevelIndex>3</LevelIndex>
<MaxPoll>PM2.5</MaxPoll>
<Color>0xFF7E00</Color>
<Intro>易感人群症状有轻度加剧,健康人群出现刺激症状</Intro>
<Tips>儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼</Tips>
<CLng>114.467</CLng>
<CLat>38.012</CLat>
<ShowDetail>true</ShowDetail>
<Polls>
<Poll>
<Name>SO2</Name>
<Value>0.022</Value>
<Count>0.022</Count>
<IAQI>8</IAQI>
</Poll>
<Poll>
<Name>CO</Name>
<Value>1.505</Value>
<Count>1.505</Count>
<IAQI>15</IAQI>
</Poll>
<Poll>
<Name>NO2</Name>
<Value>0.043</Value>
<Count>0.043</Count>
<IAQI>22</IAQI>
</Poll>
<Poll>
<Name>O3-1H</Name>
<Value>0.047</Value>
<Count>0.047</Count>
<IAQI>15</IAQI>
</Poll>
<Poll>
<Name>O3-8H</Name>
<Value>0.028</Value>
<Count>0.028</Count>
<IAQI>0</IAQI>
</Poll>
<Poll>
<Name>PM2.5</Name>
<Value>0.081</Value>
<Count>0.081</Count>
<IAQI>108</IAQI>
</Poll>
<Poll>
<Name>PM10</Name>
<Value>0.125</Value>
<Count>0.125</Count>
<IAQI>88</IAQI>
</Poll>
</Polls>
<Images>
<Image>
<Name>市区西南高教</Name>
<Url>image/1300000102.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
</Images>
</Pointer>
<Pointer>
<City>石家庄市</City>
<Region>裕华区</Region>
<Name>市区世纪公园</Name>
<DataTime>03/31 15:00</DataTime>
<AQI>107</AQI>
<Level>轻度污染</Level>
<LevelIndex>3</LevelIndex>
<MaxPoll>PM2.5</MaxPoll>
<Color>0xFF7E00</Color>
<Intro>易感人群症状有轻度加剧,健康人群出现刺激症状</Intro>
<Tips>儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼</Tips>
<CLng>114.542</CLng>
<CLat>38.031</CLat>
<ShowDetail>true</ShowDetail>
<Polls>
<Poll>
<Name>SO2</Name>
<Value>0.021</Value>
<Count>0.021</Count>
<IAQI>7</IAQI>
</Poll>
<Poll>
<Name>CO</Name>
<Value>1.312</Value>
<Count>1.312</Count>
<IAQI>13</IAQI>
</Poll>
<Poll>
<Name>NO2</Name>
<Value>0.033</Value>
<Count>0.033</Count>
<IAQI>17</IAQI>
</Poll>
<Poll>
<Name>O3-1H</Name>
<Value>0.065</Value>
<Count>0.065</Count>
<IAQI>21</IAQI>
</Poll>
<Poll>
<Name>O3-8H</Name>
<Value>0.036</Value>
<Count>0.036</Count>
<IAQI>0</IAQI>
</Poll>
<Poll>
<Name>PM2.5</Name>
<Value>0.08</Value>
<Count>0.08</Count>
<IAQI>107</IAQI>
</Poll>
<Poll>
<Name>PM10</Name>
<Value>0.107</Value>
<Count>0.107</Count>
<IAQI>79</IAQI>
</Poll>
</Polls>
<Images>
<Image>
<Name>市区世纪公园</Name>
<Url>image/1300000101.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
</Images>
</Pointer>
<Pointer>
<City>石家庄市</City>
<Region>长安区</Region>
<Name>市区22中南校区</Name>
<DataTime>03/31 15:00</DataTime>
<AQI>109</AQI>
<Level>轻度污染</Level>
<LevelIndex>3</LevelIndex>
<MaxPoll>PM2.5</MaxPoll>
<Color>0xFF7E00</Color>
<Intro>易感人群症状有轻度加剧,健康人群出现刺激症状</Intro>
<Tips>儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼</Tips>
<CLng>114.562</CLng>
<CLat>38.042</CLat>
<ShowDetail>true</ShowDetail>
<Polls>
<Poll>
<Name>SO2</Name>
<Value>0.028</Value>
<Count>0.028</Count>
<IAQI>10</IAQI>
</Poll>
<Poll>
<Name>CO</Name>
<Value>1.38</Value>
<Count>1.38</Count>
<IAQI>14</IAQI>
</Poll>
<Poll>
<Name>NO2</Name>
<Value>0.022</Value>
<Count>0.022</Count>
<IAQI>11</IAQI>
</Poll>
<Poll>
<Name>O3-1H</Name>
<Value>0.065</Value>
<Count>0.065</Count>
<IAQI>21</IAQI>
</Poll>
<Poll>
<Name>O3-8H</Name>
<Value>0.038</Value>
<Count>0.038</Count>
<IAQI>0</IAQI>
</Poll>
<Poll>
<Name>PM2.5</Name>
<Value>0.082</Value>
<Count>0.082</Count>
<IAQI>109</IAQI>
</Poll>
<Poll>
<Name>PM10</Name>
<Value>0.132</Value>
<Count>0.132</Count>
<IAQI>91</IAQI>
</Poll>
</Polls>
<Images>
<Image>
<Name>市区22中南校区</Name>
<Url>image/1300000103.jpg?time=0031150000</Url>
<DataTime>03/31 15:00</DataTime>
</Image>
</Images>
</Pointer>
2.python代码
from xml.etree import ElementTree as ET
import xlwt
#提取元素数据
def parseXml():
name_list = [] #站点名称列表
code_list = [] #站点代码列表
pointes = [] #站点名称和代码列表
#打开文件
dom = ET.parse('datas.xml')
#文档根元素
root = dom.getroot()
#获取Pointers标签列表
find_tag = root.findall(".//Pointers/")
#遍历Name
for p in find_tag:
dd = p.find('.//Images/Image/Name')#找到Name标签
name_list.append(dd.text)#加入列表
#遍历Url
for p in find_tag:
dd = p.find('.//Images/Image/Url')#找到Url标签
code_list.append(dd.text[6:16])#截取代码部分,加入列表
#将名称和代码装入pointes
pointes.append(name_list)
pointes.append(code_list)
return pointes
#写入excel
def save_excel(file_path,datas):
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
r = 0 #行
c = 0 #列
for data in datas:
for c in range(len(data)):
sheet1.write(c,r,data[c])
r = r + 1
f.save(file_path)
if __name__ == '__main__':
listdemo = parseXml()
save_excel('aaa.xls',listdemo)
3.运行python脚本,得到数据如下:
4.OK
更多推荐
已为社区贡献1条内容
所有评论(0)