簡體   English   中英

如何從不在任何字典中的 JSON 文件中刪除無關數據? (HTTP 日志)

[英]How do I remove extraneous data from JSON file that is not in any dictionary? (HTTP logs)

我還是個新手,正在學習,所以請耐心等待。

好的 - 所以我有 HTTP 日志(~100k+ 記錄)。 我正在嘗試正確格式化它以供 JSON 加載函數使用。 我知道會接受:

[ 
    { "k1":"v1" } 
    { "k2":"v2" }
    { "k3":"v3" }
]

我的數據當前不在列表中,但看起來像這樣:

2019-11-13T23:50:00Z    httplog    { "k1":"v1", "k2":"v2", "k3":"v3" } 
2019-11-13T23:50:00Z    httplog    { "k4":"v4", "k5":"v5", "k6":"v6" }
.
.
.

等 10 萬條記錄。

在每行字典開始之前刪除額外信息的最佳方法是什么,以便我可以將它包裝在一個列表中,然后能夠將它傳遞給 JSON 加載?

謝謝! 如果我沒有提供足夠的信息,請告訴我。

這是你想要的嗎?

from io import StringIO
import json

log = StringIO("""\
2019-11-13T23:50:00Z    httplog    { "k1":"v1", "k2":"v2", "k3":"v3" } 
2019-11-13T23:50:00Z    httplog    { "k4":"v4", "k5":"v5", "k6":"v6" }
""")

data = [json.loads(l.split('httplog')[-1].strip()) for l in log]

data最終是:

[{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}, {'k4': 'v4', 'k5': 'v5', 'k6': 'v6'}]

或者,如果您不能可靠地拆分“httplog”上的行,但您知道您的數據在第一個“{”之后開始,您可以這樣做:

data = [json.loads(l[l.find('{'):].strip()) for l in log]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM