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调用C/C++动态链接库的方法详解
Jul 22 Python
Python中DJANGO简单测试实例
May 11 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Django values()和value_list()的使用
Mar 31 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
Python如何输出百分比
Jul 31 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Python Merge函数原理及用法解析
Sep 16 Python
pip install命令安装扩展库整理
Mar 02 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 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
用户的详细注册和判断
2006/10/09 PHP
javascript静态的url如何传递
2007/05/03 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
C#的几个面试问题
2016/05/22 面试题
如何安装ruby on rails
2014/02/09 面试题
运动会解说词100字
2014/01/31 职场文书
2013年军训通讯稿
2014/02/05 职场文书
售房协议书
2014/08/19 职场文书
谢师宴邀请函
2015/02/02 职场文书
借条格式范本
2015/05/25 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android