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 相关文章推荐
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
python简单判断序列是否为空的方法
Jun 30 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
python实现高斯判别分析算法的例子
Dec 09 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
Keras实现将两个模型连接到一起
May 23 Python
Django Path转换器自定义及正则代码实例
May 29 Python
Python 如何展开嵌套的序列
Aug 01 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 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 imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php数组转成json格式的方法
2015/03/09 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
Python中的高级函数map/reduce使用实例
2015/04/13 Python
详解Django通用视图中的函数包装
2015/07/21 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
教育技术学专业职业规划书
2014/03/03 职场文书
晚会主持词开场白
2014/03/17 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
月考总结与反思
2015/10/22 职场文书
《刷子李》教学反思
2016/02/20 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js