python解析基于xml格式的日志文件


Posted in Python onFebruary 25, 2017

大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本。

首先,同样的先看看日志是个啥样。

python解析基于xml格式的日志文件

都是xml格式的,是不是看着就头晕了??没事,我们先来分析一波。

1.每一段开头都是catalina-exec,那么我们就按catalina-exec来分,分了之后,他们就都是一段一段的了。

2.然后,我们再在已经分好的一段段里面分,找出你要分割的关键字,因为是xml的,所以,接下来的工作就简单了,都是一个头一个尾的。

3.但是还有一个问题,有可能有的里面没有你想要的关键字,所以你要判断下,如果没有这个字段,那么我就把这个字段设置为空。

思路清晰了,代码自然而然就简单了。

接下来我们就看看代码

#coding:utf-8 
import re 
#文本所在TXT文件 
file = 'iag_interface.log' 
#分割一段 
xml1='catalina-exec' 
xml2='catalina-exec' 
#关键字reqtimestamp 
time1 = '<timestamp>' 
time2 = '</timestamp>' 
#关键字functionid 
functionid1 = '<functionid>' 
functionid2 = '</functionid>' 
#关键字transid 
transid1='<transid>' 
transid2='</transid>' 
#关键字siappid 
siappid1='<siappid>' 
siappid2='</siappid>' 
#关键字userid 
userid1='<userid>' 
userid2='</userid>' 
#关键字mobnum 
mobnum1='<mobnum>' 
mobnum2='</mobnum>' 
f = open(file,'r',encoding= 'utf-8') 
#f = open(file,'r') 
#for (num,value) in enumerate(f): 
 #print("line number",num,"is:",value) 
buff = f.read() 
#清除换行符,请取消下一行注释 
#buff = buff.replace('\n','') 
pat = re.compile(time1+'(.*?)'+time2,re.S) 
pat1 = re.compile(functionid1+'(.*?)'+functionid2,re.S) 
pat2 = re.compile(transid1+'(.*?)'+transid2,re.S) 
pat3 = re.compile(siappid1+'(.*?)'+siappid2,re.S) 
pat4 = re.compile(userid1+'(.*?)'+userid2,re.S) 
pat5 = re.compile(mobnum1+'(.*?)'+mobnum2,re.S) 
pat6=re.compile(xml1+'(.*?)'+xml2,re.S) 
result6 = pat6.findall(buff) 
print(len(result6)) 
x = open("logfx.txt", 'w') 
x.write("===========================开始数据================================="+"\n") 
x.write("time"+"\t"+"functionid"+"\t"+"transid"+"\t"+"siappid"+"\t"+"userid"+"\t"+"mobnum"+"\n") 
for i in range(0,len(result6)): 
 result = pat.findall(result6[i]) 
 result1 = pat1.findall(result6[i]) 
 result2 = pat2.findall(result6[i]) 
 result3 = pat3.findall(result6[i]) 
 result4 = pat4.findall(result6[i]) 
 result5 = pat5.findall(result6[i]) 
 if len(result)==0: 
  result.append("空") 
 if len(result1)==0: 
  result1.append("空") 
 if len(result2)==0: 
  result2.append("空") 
 if len(result3)==0: 
  result3.append("空") 
 if len(result4)==0: 
  result4.append("空") 
 if len(result5)==0: 
  result5.append("空") 
 #print(result[0],"=",result1[0],"=",result2[0],"=",result3[0],"=",result4[0],"=",result5[0]) 
 x.write("timestamp:"+result[0]+"\t"+result1[0]+"\t"+result2[0]+"\t"+result3[0]+"\t"+result4[0]+"\t"+"mobnum:"+result5[0]+"\n") 
x.write("===========================结束数据================================="+"\n")  
print("执行完毕!生成文件logfx.txt") 
x.close()

运行下代码

python解析基于xml格式的日志文件

python解析基于xml格式的日志文件把所有数据运行成功了。接下来查看文件

python解析基于xml格式的日志文件

好了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django批量导入不重复数据
Mar 25 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
python面试题之列表声明实例分析
Jul 08 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
Pytorch实验常用代码段汇总
Nov 19 Python
python中类与对象之间的关系详解
Dec 16 Python
Python异常类型以及处理方法汇总
Jun 05 Python
一文搞懂python异常处理、模块与包
Jun 26 Python
python实现局部图像放大
Nov 17 Python
python 实现图片特效处理
Apr 03 Python
Python中防止sql注入的方法详解
Feb 25 #Python
Python 数据结构之旋转链表
Feb 25 #Python
Python数据结构之翻转链表
Feb 25 #Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 #Python
python函数的5种参数详解
Feb 24 #Python
Python实现读取文件最后n行的方法
Feb 23 #Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 #Python
You might like
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php实现字符串翻转的方法
2015/03/27 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
js跨域请求的5中解决方式
2015/07/02 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
Python 字符串与数字输出方法
2018/07/16 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
厨师岗位职责
2013/11/12 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
学校交通安全责任书
2014/08/25 职场文书
先进个人申报材料
2014/12/30 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
JS的深浅复制详细
2021/10/16 Javascript
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle