本文目的是用python的ElementTree和xlwt解析xml文件并写入excel,在网上和官网看了一些示例,都是一些基本用法,简单例子,个人觉得不够实用,所以整理了此篇博客,把xml文件中的城市环境监测站点名称和代码,将数据提取保存到excel中。废话不多说直接上代码
1.需要解析的datas.xml文件,由于文件内容比较多,所以只截取部分,需要提取的内容为
Pointers/Images/Image/Name和Pointers/Images/Image/Url下的数据
如下所示
石家庄市
03/31 15:00
107
轻度污染
2
3
PM2.5
0xFF7E00
易感人群症状有轻度加剧,健康人群出现刺激症状
儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼
true
SO2
0.026
0
9
CO
1.55
0
16
NO2
0.034
0
17
O3-1H
0.062
0
20
O3-8H
0.036
0
0
PM2.5
0.08
0
107
PM10
0.128
0
89
市区西南高教
image/1300000102.jpg?time=0031150000
03/31 15:00
市区世纪公园
image/1300000101.jpg?time=0031150000
03/31 15:00
市区22中南校区
image/1300000103.jpg?time=0031150000
03/31 15:00
市区职工医院
image/1300000104.jpg?time=0031150000
03/31 15:00
市区人民会堂
image/1300000105.jpg?time=0031150000
03/31 15:00
市区西北水源
image/1300000106.jpg?time=0031150000
03/31 15:00
市区高新区
image/1300000107.jpg?time=0031150000
03/31 15:00
市区封龙山
image/1300000113.jpg?time=0031150000
03/31 15:00
井陉矿区区委大楼
image/1300000116.jpg?time=0031150000
03/31 15:00
井陉矿区南寨小学
image/1300000199.jpg?time=0031150000
03/31 15:00
井陉县气象局
image/1300000117.jpg?time=0031150000
03/31 15:00
井陉县3502生活区
image/1300000192.jpg?time=0031150000
03/31 15:00
正定联通公司
image/1300000127.jpg?time=0031150000
03/31 15:00
正定县公安消防大队
image/1300000191.jpg?time=0031150000
03/31 15:00
正定县党校
image/1300000190.jpg?time=0031150000
03/31 15:00
栾城通讯公司
image/1300000118.jpg?time=0031150000
03/31 15:00
栾城六中
image/1300000194.jpg?time=0031150000
03/31 15:00
栾城区环保局
image/1300000193.jpg?time=0031150000
03/31 15:00
行唐县委办公楼
image/1300000125.jpg?time=0031150000
03/31 15:00
行唐启明中学
image/1300000189.jpg?time=0031150000
03/31 15:00
灵寿供水
image/1300000124.jpg?time=0031150000
03/31 15:00
灵寿县市场管理局
image/1300000188.jpg?time=0031150000
03/31 15:00
高邑县政府
image/1300000120.jpg?time=0031150000
03/31 15:00
高邑镇政府
image/1300000187.jpg?time=0031150000
03/31 15:00
深泽供电局
image/1300000130.jpg?time=0031150000
03/31 15:00
深泽华丽大楼
image/1300000186.jpg?time=0031150000
03/31 15:00
赞皇县政府
image/1300000121.jpg?time=0031150000
03/31 15:00
赞皇中学
image/1300000180.jpg?time=0031150000
03/31 15:00
无极环保局
image/1300000129.jpg?time=0031150000
03/31 15:00
无极卫计局
image/1300000179.jpg?time=0031150000
03/31 15:00
平山冶河
image/1300000131.jpg?time=0031150000
03/31 15:00
平山县县政府
image/1300000177.jpg?time=0031150000
03/31 15:00
元氏住建局
image/1300000119.jpg?time=0031150000
03/31 15:00
元氏县气象局
image/1300000176.jpg?time=0031150000
03/31 15:00
赵县环保局
image/1300000133.jpg?time=0031150000
03/31 15:00
赵县县政府
image/1300000178.jpg?time=0031150000
03/31 15:00
赵县文广新局
image/1300000175.jpg?time=0031150000
03/31 15:00
辛集市政府
image/1300000132.jpg?time=0031150000
03/31 15:00
辛集采油五厂
image/1300000171.jpg?time=0031150000
03/31 15:00
辛集城管大队
image/1300000170.jpg?time=0031150000
03/31 15:00
藁城市环保局
image/1300000122.jpg?time=0031150000
03/31 15:00
藁城实验学校
image/1300000197.jpg?time=0031150000
03/31 15:00
藁城八中
image/1300000198.jpg?time=0031150000
03/31 15:00
晋州博纳德
image/1300000123.jpg?time=0031150000
03/31 15:00
晋州市人民政府
image/1300000174.jpg?time=0031150000
03/31 15:00
image/.jpg?time=0031150000
03/31 15:00
新乐市委东楼
image/1300000126.jpg?time=0031150000
03/31 15:00
新乐实验学校
image/1300000173.jpg?time=0031150000
03/31 15:00
新乐市卫生局
image/1300000172.jpg?time=0031150000
03/31 15:00
鹿泉一中
image/1300000128.jpg?time=0031150000
03/31 15:00
鹿泉住建局
image/1300000196.jpg?time=0031150000
03/31 15:00
鹿泉区环保局
image/1300000195.jpg?time=0031150000
03/31 15:00
石家庄市
桥西区
市区西南高教
03/31 15:00
108
轻度污染
3
PM2.5
0xFF7E00
易感人群症状有轻度加剧,健康人群出现刺激症状
儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼
114.467
38.012
true
SO2
0.022
0.022
8
CO
1.505
1.505
15
NO2
0.043
0.043
22
O3-1H
0.047
0.047
15
O3-8H
0.028
0.028
0
PM2.5
0.081
0.081
108
PM10
0.125
0.125
88
市区西南高教
image/1300000102.jpg?time=0031150000
03/31 15:00
石家庄市
裕华区
市区世纪公园
03/31 15:00
107
轻度污染
3
PM2.5
0xFF7E00
易感人群症状有轻度加剧,健康人群出现刺激症状
儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼
114.542
38.031
true
SO2
0.021
0.021
7
CO
1.312
1.312
13
NO2
0.033
0.033
17
O3-1H
0.065
0.065
21
O3-8H
0.036
0.036
0
PM2.5
0.08
0.08
107
PM10
0.107
0.107
79
市区世纪公园
image/1300000101.jpg?time=0031150000
03/31 15:00
石家庄市
长安区
市区22中南校区
03/31 15:00
109
轻度污染
3
PM2.5
0xFF7E00
易感人群症状有轻度加剧,健康人群出现刺激症状
儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼
114.562
38.042
true
SO2
0.028
0.028
10
CO
1.38
1.38
14
NO2
0.022
0.022
11
O3-1H
0.065
0.065
21
O3-8H
0.038
0.038
0
PM2.5
0.082
0.082
109
PM10
0.132
0.132
91
市区22中南校区
image/1300000103.jpg?time=0031150000
03/31 15:00
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