2013-07-29 88 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