亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在python中解析非結構化日志文件

在python中解析非結構化日志文件

POPMUISE 2023-05-09 15:58:00
我想解析一個包含非結構化文本的日志文件。我需要獲取核心 ID,在 json 中通過/失敗。自一周以來,我是編程的新手,我將不勝感激。AMPTTK v25: RSA ALL THREADS================RSACores X RSACores==============time: 421045.73Num Threads Available to process: 256Num Cores   Requested to execute: 256TSC freq: 1600629120.0Memory allocated @ main (not all used by program): 3842.000000 MB  RSA thread:       : 0wrkspace addr       : 7f0483400000wrkspace size       : f00000        # cores:   16        core id:      0,      1,      2,      3,      4,      5,      6,      7,     64,     65,     66,     67,     68,     69,     70,     71,      pass/fail:   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,       test ipc:  4.497,  4.503,  4.489,  4.476,  4.537,  4.471,  4.499,  4.459,  4.934,  4.946,  4.892,  4.933,  4.927,  4.927,  4.882,  4.886,     aperf(MHz):   2826,   2814,   2826,   2826,   2826,   2826,   2827,   2826,   2909,   2909,   2909,   2909,   2909,   2909,   2909,   2909,      aperf ipc:  2.392,  2.408,  2.397,  2.392,  2.397,  2.388,  2.397,  2.388,  2.341,  2.341,  2.340,  2.341,  2.341,  2.341,  2.340,  2.340,     mce status:   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,   pass,
查看完整描述

1 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

我這樣做的一般方法是在日志文件中查找結構,然后將其提取出來。:查看您共享的數據,感興趣的行上有一個字符和十六個逗號分隔值。由于數據不是直接放入json的形式,所以我存儲在一個臨時字典中,然后將其轉換為json字符串。示例如下:


import json


# parse the log file and store in dictionary

raw_data = {}

with open('unstructured_data.txt') as log:

    for line in log:

        line = line.rstrip()

        if line.count(':') == 1:

            heading, data = line.split(':')

            fields = data.split(',')

            if len(fields) > 15:

                raw_data[heading.lstrip()] = fields


# Put only data of interest in to another python dictionary

result_data = {}

for i in range(len(raw_data['core id'])):

    result_data[raw_data['core id'][i].strip()] = raw_data['pass/fail'][i].strip()


# Convert python dictionary to json string

result_json = json.dumps(result_data)


print(result_json)

從您的日志文件中給出以下內容:


$ python3 parse_log.py 

{"0": "pass", "1": "pass", "2": "pass", "3": "pass", "4": "pass", "5": "pass", "6": "pass", "7": "pass", "64": "pass", "65": "pass", "66": "pass", "67": "pass", "68": "pass", "69": "pass", "70": "pass", "71": "pass", "": ""}

雖然這不是一個完美的結果,但它應該有望通過實際數據得到改進。


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號