在日常的日誌解析當中,我們可能需要實現對日誌中的某一特殊段進行信息的過濾, 下麵介紹一下我的常用方法。 針對這個日誌輸出信息,其實我主要關註的是下麵這個日誌段內的信息 那麼其實我就是想獲取含有'loops-fast'這個字元串的數據,而過濾掉其他的干擾數據,我分為以下幾個步驟實現 首先要確定邊界值, ...
在日常的日誌解析當中,我們可能需要實現對日誌中的某一特殊段進行信息的過濾,
下麵介紹一下我的常用方法。
針對這個日誌輸出信息,其實我主要關註的是下麵這個日誌段內的信息
那麼其實我就是想獲取含有'loops-fast'這個字元串的數據,而過濾掉其他的干擾數據,我分為以下幾個步驟實現
- 首先要確定邊界值,也就是你要截取的段的開頭和結尾的特殊欄位,這個很重要
- 接著我們需要設置一個tag值,通過這個tag值我們可以判斷當前是不是在需要過濾的日誌段內
- 編碼的時候主要是通過tag值和關鍵字一起進行判斷
- 考慮到性能可以適當調整判斷的順序,也就是將需要大部分可能出現的判斷提前了,並且在判斷結束之後及時退出判斷
下麵是實現的代碼
file_data = "" tag = 0 with open(filename, "rb") as file: temp = str(file.read().decode('utf-8','ignore')) list = temp.split('\n') file.close() #主要過濾實現 for line in list: if tag == 0: file_data = file_data + line + '\n' if "Ir file:function" in line: tag = 1 file_data = file_data + '--------------------------------------------------------------------------------\n' if ‘loops-fast’ in line and tag == 1: file_data = file_data + line + '\n' functionIr2dict(line,dire_ir) if "Auto-annotated source" in line and tag == 1: tag = 0 file_data = file_data + '--------------------------------------------------------------------------------\n' file_data = file_data + line + '\n' with open(filename,'w',encoding='utf-8') as file: file.write(file_data) file.close()