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 07 Python
zookeeper python接口实例详解
Jan 18 Python
分析Python中解析构建数据知识
Jan 20 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
python 批量修改/替换数据的实例
Jul 25 Python
Django如何将URL映射到视图
Jul 29 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
Aug 09 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 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
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
Mac下Anaconda的安装和使用教程
2018/11/29 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
Django的models模型的具体使用
2019/07/15 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
python根据时间获取周数代码实例
2019/09/30 Python
Python Process多进程实现过程
2019/10/22 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
解决python运行效率不高的问题
2020/07/20 Python
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
财务管理专业推荐信
2013/11/19 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
运动员入场词
2015/07/18 职场文书
感谢师恩主题班会
2015/08/17 职场文书