如何将日志文件解析为JSON

2024-05-29 03:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个日志文件(叫做prepocstats.log文件)我想知道如何使用python2.6将其解析为JSON格式的文件。

日志文件的输入是:

Preprocessor Profile Statistics (all)
==========================================================
Num            Preprocessor Layer     Checks      Exits  
===            ============ =====     ======      =====  
 1              httpinspect     0          1          1  
 2                   detect     0         33         33   
... (and more rows)

我想将其解析为JSON,例如输出如下:

^{pr2}$

Tags: 文件loglayerjson格式allprofilenum
2条回答

有不止一种方法可以做到这一点。我可能会使用.splitlines()方法,然后遍历这些行并使用line.split()将其内容拆分到空格处,此时您可以根据需要分配值。如果这些值本身可以包含空格,那么该方法就不能再正常工作了,有时也不会产生预期的输出。此时,您可以尝试使用split(delimiter),也可以尝试使用regex。没有正确的方法可以做到这一点,但是,即使有些方法可能更有效,我想你已经明白了。在

这个解决方案是针对这个问题的。我认为第3行包含结果的键值,从第5行开始,到文件末尾都可以使用。在

这是我的代码:

import json 
a = open('abc.log','r')
text = a.read()
text_as_list = text.split('\n')
keys = text_as_list[2].split()
result = []
for item in text.split('\n')[4:len(text_as_list)]:
    temp_dict = {}  
    for i,j in zip(keys,item.split()):  
        if j.isdigit():         
            temp_dict[i] = int(j)
        else:
            temp_dict[i] = j
    result.append(temp_dict)
print json.dumps(result)

结果:

^{pr2}$

相关问题 更多 >

    热门问题