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的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
python实现BackPropagation算法
Dec 14 Python
python 将md5转为16字节的方法
May 29 Python
用python生成1000个txt文件的方法
Oct 25 Python
python3实现多线程聊天室
Dec 12 Python
python修改txt文件中的某一项方法
Dec 29 Python
Django自定义模板过滤器和标签的实现方法
Aug 21 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
python cookie反爬处理的实现
Nov 01 Python
python上下文管理的使用场景实例讲解
Mar 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
ThinkPHP模型详解
2015/07/27 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python组合无重复三位数的实例
2018/11/13 Python
python 用下标截取字符串的实例
2018/12/25 Python
python实现ip代理池功能示例
2019/07/05 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
积极分子思想汇报
2014/01/04 职场文书
剪彩仪式主持词
2014/03/19 职场文书
先进个人事迹材料
2014/12/29 职场文书
公诉意见书范文
2015/06/05 职场文书
告知书格式
2015/07/01 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
python实现批量移动文件
2021/04/05 Python