> 백엔드 개발 > 파이썬 튜토리얼 > Python은 로그 파일을 xml 형식으로 구문 분석합니다.

Python은 로그 파일을 xml 형식으로 구문 분석합니다.

高洛峰
풀어 주다: 2017-02-28 09:19:52
원래의
1336명이 탐색했습니다.

안녕하세요 여러분. 제가 설날에 정상적인 상태로 돌아오지 못해 오랫동안 지식의 물결을 나누지 못했습니다. 오늘은 계속해서 작은 소식을 전해 드리겠습니다. Python에서 로그를 구문 분석하기 위한 스크립트입니다.

우선 로그가 어떻게 보이는지 살펴보겠습니다.

Python은 로그 파일을 xml 형식으로 구문 분석합니다.

보기만 해도 어지러우시죠? ? 괜찮아, 먼저 분석해 보자.

1. 각 문단의 시작은 catalina-exec이므로 구분 후 문단별로 나누어보겠습니다.

2. 그러면 나누어져 있던 세그먼트로 나누어서 원하는 키워드를 찾아보겠습니다. XML이기 때문에 다음 작업은 모두 하나의 헤더입니다. .

3. 그런데 또 다른 문제가 있는데, 그 중 원하는 키워드가 없을 수도 있으니 그런 필드가 없을 경우에는 이 필드를 비워두도록 하겠습니다. .

아이디어가 명확하면 코드도 자연스럽게 단순해집니다.

다음은 코드를 살펴보겠습니다

#coding:utf-8 
import re 
#文本所在TXT文件 
file = 'iag_interface.log' 
#分割一段 
xml1='catalina-exec' 
xml2='catalina-exec' 
#关键字reqtimestamp 
time1 = &#39;<timestamp>&#39; 
time2 = &#39;</timestamp>&#39; 
#关键字functionid 
functionid1 = &#39;<functionid>&#39; 
functionid2 = &#39;</functionid>&#39; 
#关键字transid 
transid1=&#39;<transid>&#39; 
transid2=&#39;</transid>&#39; 
#关键字siappid 
siappid1=&#39;<siappid>&#39; 
siappid2=&#39;</siappid>&#39; 
#关键字userid 
userid1=&#39;<userid>&#39; 
userid2=&#39;</userid>&#39; 
#关键字mobnum 
mobnum1=&#39;<mobnum>&#39; 
mobnum2=&#39;</mobnum>&#39; 
f = open(file,&#39;r&#39;,encoding= &#39;utf-8&#39;) 
#f = open(file,&#39;r&#39;) 
#for (num,value) in enumerate(f): 
 #print("line number",num,"is:",value) 
buff = f.read() 
#清除换行符,请取消下一行注释 
#buff = buff.replace(&#39;\n&#39;,&#39;&#39;) 
pat = re.compile(time1+&#39;(.*?)&#39;+time2,re.S) 
pat1 = re.compile(functionid1+&#39;(.*?)&#39;+functionid2,re.S) 
pat2 = re.compile(transid1+&#39;(.*?)&#39;+transid2,re.S) 
pat3 = re.compile(siappid1+&#39;(.*?)&#39;+siappid2,re.S) 
pat4 = re.compile(userid1+&#39;(.*?)&#39;+userid2,re.S) 
pat5 = re.compile(mobnum1+&#39;(.*?)&#39;+mobnum2,re.S) 
pat6=re.compile(xml1+&#39;(.*?)&#39;+xml2,re.S) 
result6 = pat6.findall(buff) 
print(len(result6)) 
x = open("logfx.txt", &#39;w&#39;) 
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 구문 분석 xml 형식 로그 파일과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿