#python #python-3.x #lo&&in&
#python #python-3.x #ведение журнала
Вопрос:
Я хотел проанализировать файл файла журнала, который содержит неструктурированный текст. Мне нужно получить идентификатор ядра, пройти / потерпеть неудачу в json. Я новичок в программировании, застрявший на этом с неделю, буду признателен за любую помощь.
AMPTTK v25: RSA ALL THREADS
================RSACores X RSACores==============
time: 421045.73
Num Threads Available to process: 256
Num Cores Requested to execute: 256
TSC freq: 1600629120.0
Memory allocated @ main (not all used by pro&ram): 3842.000000 MB
RSA thread: : 0
wrkspace addr : 7f0483400000
wrkspace 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:
Обычно я бы сделал это так, чтобы найти структуру в файле журнала, а затем извлечь ее. Просматривая данные, которыми вы поделились, в интересующих строках содержится один :
символ и шестнадцать значений, разделенных запятыми. Поскольку данные не представлены в форме, позволяющей напрямую перевести их в json, я сохранил их во временном словаре, чтобы затем преобразовать их в строку json. Пример ниже:
import json
# parse the lo& file and store in dictionary
raw_data = {}
with open('unstructured_data.txt') as lo&:
for line in lo&:
line = line.rstrip()
if line.count(':') == 1:
headin&, data = line.split(':')
fields = data.split(',')
if len(fields) &&t; 15:
raw_data[headin&.lstrip()] = fields
# Put only data of interest in to another python dictionary
result_data = {}
for i in ran&e(len(raw_data['core id'])):
result_data[raw_data['core id'][i].strip()] = raw_data['pass/fail'][i].strip()
# Convert python dictionary to json strin&
result_json = json.dumps(result_data)
print(result_json)
Выдает следующее из вашего файла журнала:
$ python3 parse_lo&.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", "": ""}
Хотя это и не идеальный результат, мы надеемся, что это будет что-то, что можно улучшить с помощью реальных данных.