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中文编码那些事
Jun 25 Python
Python对列表排序的方法实例分析
May 16 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python OS模块实例详解
Apr 15 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
解决python replace函数替换无效问题
Jan 18 Python
python如何调用字典的key
May 25 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
pandas提升计算效率的一些方法汇总
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
非常不错的MySQL优化的8条经验
2008/03/24 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
修改发贴的编辑功能
2007/03/07 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
理解JavaScript原型链
2016/10/25 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
python多进程操作实例
2014/11/21 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
贺卡寄语大全
2014/04/11 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
红色故事汇观后感
2015/06/18 职场文书