2016-11-25 6 views
0

誰かが助けてくれることを願っています。私は、ログは次のようになりますのpythonへのsyslogサーバから送信されています:正規表現を使ったPythonの解析ログ

{'Raw': 'Nov 26 00:23:07 TEST 23856434232342 (2016-11-26T00:23:07) http-proxy[2063]: Allow 1-Trusted 0-External tcp 192.168.0.1 2.3.4.5 57405 80 msg="HTTP Request" proxy_act="HTTP-TEST" op="POST" dstname="www.google.com" arg="/" sent_bytes="351" rcvd_bytes="1400" (HTTP-proxy-TEST-00)'} 

私はIPアドレス、dstname=sent_bytes=dcvd_bytes=を抽出できるようにする必要があり、可能ならば、解析JSONに。私はREGEX (["'])(?:(?=(\\?))\2.)*?\1を使用して二重引用符と一致させようとしましたが、正しく動作しません。

私は必要なデータをどのように得ることができるでしょうか?または上記をjsonに解析する方法は? IPを想定し

おかげ

答えて

0

は、dstname sent_bytesとrcvd_bytesはそれらを完全に働いたすべての

import re 
s = r"""{'Raw': 'Nov 26 00:23:07 TEST 23856434232342 (2016-11-26T00:23:07) http-proxy[2063]: Allow 1-Trusted 0-External tcp 192.168.0.1 2.3.4.5 57405 80 msg="HTTP Request" proxy_act="HTTP-TEST" op="POST" dstname="www.google.com" arg="/" sent_bytes="351" rcvd_bytes="1400" (HTTP-proxy-TEST-00)'}""" 

match = re.findall('(?:tcp |dstname=|sent_bytes=|rcvd_bytes=)"?([^\s"]+)', s) 
# match = ['192.168.0.1', 'www.google.com', '351', '1400'] 
(ip, dstname, sent_bytes, rcvd_bytes) = match 
# use this to parse to json 
+0

感謝を取得するためにre.findallを使用して、順番に常にあります。 – AlanR

関連する問題