python 解析xml文件写入excel

      本文目的是用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脚本,得到数据如下:

python 解析xml文件写入excel_第1张图片

4.OK

你可能感兴趣的:(python 解析xml文件写入excel)