如何获取日志字符串的最后一部分并将其解释为json?

扎克

我正在查看以下格式的日志消息

datetime log_message_type message_type server {json_string}

因此,每一行都由空格分隔,每行始终具有相同的字段,最后在json块中包含一个json字符串,其中包含各种字段。

我考虑过用一个简单的方法

with open('test.log', 'r') as f:
    for x in f:
        line = x.split()

        datetime         = line[0]
        log_message_type = line[1]
        message_type     = line[2]
        server           = line[3]
        json_string      = line[4]

这会行得通,除非我的json字符串中有空格,例如,像这样的东西。

{ "foo" : "bar" }

因此,以这种方式进行操作会在空格处拆分我的json字符串。有什么方法可以使用正则表达式或仅在到达行的“ json字符串”部分,然后保留其余部分之前在空格上分割的内容?我尝试做类似的事情

line = re.compile(".*\s.*\s.*\s.*\s").split(x)

为了尝试根据json字符串部分之前的4个空格来解析行,但是恐怕我对python中的regex系统是如何工作的还不够了解。有人可以帮我吗?

编辑:忘了提,我为此停留在python 2.7。

努法尔·易卜拉欣

尝试这样的事情。正则表达式会很快失去控制。

log_line = "datetime log_message_type message_type server {json_string}"
json_part = log_line.split(None, 4)[-1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何找到字符串的一部分并将其回显?

如何打印 JSON 字符串的一部分并将其存储在变量中?

如何在JavaScript中获取字符串的最后一部分?

替换字符串并将其替换为其自身的一部分

如何在 Oracle 中获取 JSON 字符串的一部分

如何删除字符串的一部分并将其附加在后面(外壳)

在连字符后获取字符串的最后一部分

如何获取某个字符之前的字符串的最后一部分?

从字符串中获取数字的最后一部分

获取字符串的最后一部分

jQuery-按符号拆分字符串并获取最后一部分

获取列表中字符串的最后一部分

分割字符串并使用C获取最后一部分

在C#中拆分并获取字符串的最后一部分

如何在shell脚本中获取'/'分隔字符串的最后一部分

如何使用子字符串函数在SAS中获取单词的最后一部分?

如何获取以“.nc”结尾的不同长度字符串的最后一部分

如何从某些路径的最后一部分的组合中获取字符串?

如何分割字符串并获得最后一部分?

如何删除字符串的最后一部分?

如何在JavaScript中删除字符串的最后一部分?

如何动态替换字符串的最后一部分?

如何获得仅包含POST响应的最后一部分的字符串?

如何在C中删除字符串的最后一部分

如何使用VBa选择字符串的最后一部分?

如何删除此字符串的一部分并仅保留数字,并将其与其他字符串相加

从一列复制一部分字符串并将其放入新的pandas列

取一个char数组的一部分并将其放入字符串中

提取字符串的一部分并将其附加到 PHP 中的末尾