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发送HTTP请求的方法小结
Jul 08 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
python循环输出三角形图案的例子
Nov 22 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
python如何求圆的面积
Jul 01 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
Pygame框架实现飞机大战
Aug 07 Python
使用django自带的user做外键的方法
Nov 30 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python实现中文输出的两种方法
2015/05/09 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python ddt实现数据驱动
2018/03/14 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
python 类之间的参数传递方式
2019/12/20 Python
Python for循环与getitem的关系详解
2020/01/02 Python
Python新手学习装饰器
2020/06/04 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
平安建设实施方案
2014/03/19 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
法学专业求职信范文
2015/03/19 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS