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结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
Python实现登陆文件验证方法
Oct 06 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python解析xml简单示例
Jun 21 Python
Python实现语音识别和语音合成功能
Sep 20 Python
python中if及if-else如何使用
Jun 02 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
python如何查找列表中元素的位置
May 30 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
那些年一起学习的PHP(二)
2012/03/21 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python之wxPython应用实例
2014/09/28 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
windows下python安装小白入门教程
2018/09/18 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
品质主管岗位职责
2014/03/16 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
初中学习计划书范文
2014/09/15 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
商务代表岗位职责
2015/02/15 职场文书
入党转正申请书范文
2019/05/20 职场文书
Python实现照片卡通化
2021/12/06 Python