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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
python实现的阳历转阴历(农历)算法
Apr 25 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
Python OS模块实例详解
Apr 15 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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 方便水印和缩略图的图形类
2009/05/21 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
js 省地市级联选择
2010/02/07 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
python 字符串格式化代码
2013/03/17 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python 获取网页编码方式实现代码
2017/03/11 Python
pyhton列表转换为数组的实例
2018/04/04 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
外贸英语毕业生自荐信
2013/11/14 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
信用卡工资证明范本
2014/10/17 职场文书
文体活动总结
2015/02/04 职场文书
五年级语文教学反思
2016/03/03 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技