我想解析一些日誌,它以鍵對格式返回一些響應。我只想要它們包含在最後一個密鑰對(Rs:{「..」})中的值。我想要的信息都包含在大括號內。在Python中使用正則表達式檢索日誌消息
我所做的就是用正則表達式匹配花括號內像這樣的東西:
import re
log = '2016-10-13 17:04:50 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"data": "blah blah"}'
text = re.compile("Rs\:{(.*)\}").search(log).group(1)
print (text)
>>> "data": "blah blah"
# Desired results
>>> {"data": "blah blah"}
但也有一些問題,做這種方式:
我還希望啓動大括號並關閉大括號。
此方法不工作,如果有其他的開口(「{」)或關閉(「}之前或RS值內:)大括號內。
有沒有更好的方式來做到這個?
首先,修復代碼,你在'log'行缺少'''。然後,使用'r「Rs:({[^}] *})」''正則表達式。或者請澄清一下:你想要一本字典作爲輸出嗎? –
@WiktorStribiżew只需從{..}開始的整行就是我需要的。不需要字典。 – Cryssie