python解析基于xml格式的日志文件

大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本。

首先,同样的先看看日志是个啥样。

都是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格式的日志文件把所有数据运行成功了。接下来查看文件

好了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python创建xml文件示例

    本文实例讲述了Python创建xml文件的方法.分享给大家供大家参考,具体如下: 这是一个使用ElementTree有关类库,生成xml文件的例子 # *-* coding=utf-8 from xml.etree.ElementTree import ElementTree from xml.etree.ElementTree import Element from xml.etree.ElementTree import SubElement from xml.etree.ElementTr

  • 用Python解析XML的几种常见方法的介绍

    一.简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web发展到一定阶段的必然产物,既具有SGML的核心特征,又有着HTML的简单特性,还具有明确和结构良好等许多新的特性.         python解析XML常见的有三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合,注意xml.dom包里面有许多模块

  • Python获取任意xml节点值的方法

    本文实例讲述了Python获取任意xml节点值的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf-8 -*- import xml.dom.minidom ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE class SimpleXmlGetter(object): def __init__(self, data): if type(data) == str: self.root = xml.dom.minidom.parse(d

  • 使用Python生成XML的方法实例

    本文实例讲述了使用Python生成XML的方法.分享给大家供大家参考,具体如下: 1. bookstore.py #encoding:utf-8 ''' 根据一个给定的XML Schema,使用DOM树的形式从空白文件生成一个XML. ''' from xml.dom.minidom import Document doc = Document() #创建DOM文档对象 bookstore = doc.createElement('bookstore') #创建根元素 bookstore.set

  • Python存取XML的常见方法实例分析

    本文实例讲述了Python存取XML的常见方法.分享给大家供大家参考,具体如下: 目前而言,Python 3.2存取XML有以下四种方法: 1.Expat 2.DOM 3.SAX 4.ElementTree 以以下xml作为讨论依据 <?xml version="1.0" encoding="utf-8"?> <Schools> <School Name="XiDian"> <Class Id="

  • Python处理XML格式数据的方法详解

    本文实例讲述了Python处理XML格式数据的方法.分享给大家供大家参考,具体如下: 这里的操作是基于Python3平台. 在使用Python处理XML的问题上,首先遇到的是编码问题. Python并不支持gb2312,所以面对encoding="gb2312"的XML文件会出现错误.Python读取的文件本身的编码也可能导致抛出异常,这种情况下打开文件的时候就需要指定编码.此外就是XML中节点所包含的中文. 我这里呢,处理就比较简单了,只需要修改XML的encoding头部. #!/

  • 使用PYTHON创建XML文档

    当用GOOGLE查的时候,内容几乎都是一样的.但是你想要的东西,一个也没有.例如,我就找不到中国人写的如何使用PYTHON来创建一个XML文件.当然,直接用文件写的方式也能够达到同样的效果,但是毕竟容易出错,而且看起来不优雅.最后,我看了很多资料,终于明白如何使用PYTHON写一个XML文件了.以下就是一个简单的例子,这个例子是已经调试通过的,大家可以放心使用. 复制代码 代码如下: import xml.dom.minidom from xml.dom.DOMImplementation im

  • Python创建xml的方法

    本文实例讲述了Python创建xml的方法.分享给大家供大家参考.具体实现方法如下: from xml.dom.minidom import Document class write_xml(Document): def __init__(self): Document.__init__(self) def set_tag(self,tag): self.tag = tag self.tag1 = self.createElement(self.tag) self.appendChild(sel

  • Python 解析XML文件

    Python文件: 复制代码 代码如下: #parsexml.py #本例子参考自python联机文档,做了适当改动和添加 import xml.parsers.expat #控制打印缩进 level = 0 #获取某节点名称及属性值集合 def start_element(name, attrs): global level print ' '*level, 'Start element:', name, attrs level = level + 1 #获取某节点结束名称 def end_e

  • Python lxml模块安装教程

    lxml是Python中与XML及HTML相关功能中最丰富和最容易使用的库.lxml并不是Python自带的包,而是为libxml2和libxslt库的一个Python化的绑定.它与众不同的地方是它兼顾了这些库的速度和功能完整性,以及纯Python API的简洁性,与大家熟知的ElementTree API兼容但比之更优越!但安装lxml却又有点麻烦,因为存在依赖,直接安装的话用easy_install, pip都不能成功,会报gcc错误.下面列出来Windows.Linux下面的安装方法: [

  • Python使用minidom读写xml的方法

    本文实例讲述了Python使用minidom读写xml的方法.分享给大家供大家参考.具体分析如下: 一 python提供的xml支持 2种工业标准的xml解析方法-SAX和DOM.SAX(simple API for XML),是基于事件处理的,当XML文档顺序地读入时,每次遇到一个元素会触发相应的事件处理函数来处理.DOM(Document Object Model),通过构建一个树结构来表现整个xml文档,一旦树被构建,可以通过DOM提供了接口来遍历树和提取相应的数据.   python还提

  • 详细解读Python中解析XML数据的方法

    Python可以使用 xml.etree.ElementTree 模块从简单的XML文档中提取数据. 为了演示,假设你想解析Planet Python上的RSS源.下面是相应的代码: from urllib.request import urlopen from xml.etree.ElementTree import parse # Download the RSS feed and parse it u = urlopen('http://planet.python.org/rss20.xm

随机推荐