【发布时间】:2017-06-03 02:52:38
【问题描述】:
我正在查看以下格式的日志消息
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 string”部分,然后保留其余部分?我尝试做类似的事情
line = re.compile(".*\s.*\s.*\s.*\s").split(x)
尝试根据 json 字符串部分之前的 4 个空格来解析该行,但恐怕我对 python 中的正则表达式系统如何工作还不够了解。谁能帮我一把?
编辑:忘了提,为此我坚持使用 python 2.7。
【问题讨论】: