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查询阿里巴巴关键字排名的方法
Jul 08 Python
Python实现批量转换文件编码的方法
Jul 28 Python
老生常谈Python序列化和反序列化
Jun 28 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
matplotlib设置legend图例代码示例
Dec 19 Python
python实现批量注册网站用户的示例
Feb 22 Python
面向对象学习之pygame坦克大战
Sep 11 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Python爬虫之Selenium实现窗口截图
Dec 04 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 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-MySQL教程归纳总结
2008/06/07 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
简单的js计算器实现
2016/10/26 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
js类的继承定义与用法分析
2019/06/21 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
分分钟入门python语言
2018/03/20 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python扫描端口的实现
2021/01/25 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
连锁酒店店长职责范本
2014/02/13 职场文书
2014年国培研修感言
2014/03/09 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
产品质量保证书
2014/04/29 职场文书
工作失职检讨书
2015/01/26 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
主持人大赛开场白
2015/05/29 职场文书
山楂树之恋观后感
2015/06/11 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
Python实现日志实时监测的示例详解
2022/04/06 Python