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多进程并发与多线程并发编程实例总结
Feb 08 Python
python使用knn实现特征向量分类
Dec 26 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
Python使用贪婪算法解决问题
Oct 22 Python
Python FFT合成波形的实例
Dec 04 Python
django ajax发送post请求的两种方法
Jan 05 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Django websocket原理及功能实现代码
Nov 14 Python
浅析Python打包时包含静态文件处理方法
Jan 15 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
一些星际专用术语解释
2020/03/04 星际争霸
php 无限极分类
2008/03/27 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
php输出xml属性的方法
2015/03/19 PHP
PDO::getAttribute讲解
2019/01/28 PHP
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
Python Web服务器Tornado使用小结
2014/05/06 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
Python类的用法实例浅析
2015/05/27 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Python的多维空数组赋值方法
2018/04/13 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
如何在Python对Excel进行读取
2020/06/04 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
安全生产先进个人材料
2014/02/06 职场文书
《太阳》教学反思
2014/02/21 职场文书
质量月口号
2014/06/20 职场文书
企业趣味活动方案
2014/08/21 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
学习党史心得体会2016
2016/01/23 职场文书
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技