2013-07-29 30 views
0

解析日志文件时出现了一些问题,它是.txt格式。在Python中解析特定字符串的.txt文件时遇到问题

这里就是我试图提取数据的日志的部分:

CRIT : [2013-07-26T14:40:50-0400] msg=<POLICY ADDED>, 

,我想具体的作品是爆击和味精=政策ADDED。我目前得到的代码将找到CRIT字符串,但不是msg =部分。我相信这与这两个词之间的空白有关。

这里是我到目前为止的代码:

#!/usr/bin/python 

test=open("samhain.txt", "r").readlines() 
KEYWORDS= ['CRIT','msg=<POLICY ADDED>'] 

counterline=[] 
counter=0 

for line in test: 
for word in line.split(): 
    counter+=1 
    if word in KEYWORDS: 
     counterline.append(counter) 
     print word 

什么我需要添加到我的列表,以便它可以处理的空白?

感谢您的帮助!

+0

你在找什么,使用此代码吗? –

+0

是的,你没有返回KEYWORDS的第二个成员的原因是因为'line.split()'正在用空格分割'line'。没有单个标记'msg = '。正则表达式的答案是你可能想要的。 – verbsintransit

回答

0

看起来你可以使用,而不是一个正则表达式:

s = 'CRIT : [2013-07-26T14:40:50-0400] msg=<POLICY ADDED>,'  
import re 
print re.match(r'(\w+).*?msg=<(.*?)>', s).groups() 
# ('CRIT', 'POLICY ADDED') 
+0

谢谢,这很好! – Josh