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解析XML的几种方式
Feb 16 Python
Python中基础的socket编程实战攻略
Jun 01 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
详解python 中in 的 用法
Dec 12 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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执行速度全攻略(上)
2006/10/09 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
Vue使用NPM方式搭建项目
2018/10/25 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
js实现页面图片消除效果
2020/03/24 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
深入理解Python3 内置函数大全
2017/11/23 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
入党申请自荐书范文
2014/02/11 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
房产委托公证书
2014/04/08 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书