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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
python3之模块psutil系统性能信息使用
May 30 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
python中JWT用户认证的实现
May 18 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python 在局部变量域中执行代码
Aug 07 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
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
js表格分页实现代码
2009/09/18 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
深入理解Python中的内置常量
2017/05/20 Python
Python实现购物程序思路及代码
2017/07/24 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python实现直播推流效果
2019/11/26 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python新手学习raise用法
2020/06/03 Python
Python 存取npy格式数据实例
2020/07/01 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
敬老院义诊活动总结
2015/05/07 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
大学新生入学感想
2015/08/07 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Python实现机器学习算法的分类
2021/06/03 Python
css样式important规则的正确使用方式
2022/06/10 HTML / CSS
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript