日志檔案示例:
{"timestamp": "2022-01-14T00:12:21.000", "Field1": 10, "Field_Doc": {"f1": 0}}
{"timestamp": "2022-01-18T00:15:51.000", "Field_Doc": {"f1": 0, "f2": 1.7, "f3": 2}}
它將生成5個檔案:
1.timestamp.column
2.Field1.列
3.Field_Doc.f1.column
4.Field_Doc.f2.column
5.Field_Doc.f3.column
timestamp.column 的示例內容:
2022-01-14T00:12:21.000
2022-01-18T00:15:51.000
當鍵的值為空時,我遇到了一個問題,未定義為當我們的值為空時,例如:
{"timestamp": "2022-01-14T00:12:21.000", "Field1": null, "Field_Doc": {"f1": undefined}}
有人可以幫我嗎?
uj5u.com熱心網友回復:
注意,輸入檔案實際上是一個 NDJSON。請參閱檔案。
話雖如此,由于furas已經就如何處理 NDJSON 日志檔案給出了很好的答案,我將跳過這部分。請注意,有一個庫可以處理 NDJSON 檔案。請參閱 PyPI。
他的代碼需要最少的調整來處理undefined邊緣情況。該null值是有效的 JSON 值,因此他的代碼不會中斷。
您可以通過一段string.replace()時間輕松解決此問題json.loads(),使其成為有效的 JSON,然后您可以在撰寫時檢查是否value == None將值替換為空字串。請注意,這None是 JSON 的 python 等價物null。
請注意: 替換功能中包含的內容,以防止誤報...
主回圈邏輯
for line in file_obj:
# the replace function makes it valid JSON
data = json.loads(line.replace(': undefined', ': null'))
print(data)
process_dict(data, write_func)
write_func() 函式調整
def write_func(key, value):
with open(key '.column', "a") as f:
# if the value == None, make it an empty string.
if value == None:
value = ''
f.write(str(value) "\n")
我使用以下作為輸入字串:
{"timestamp": "2022-01-14T00:12:21.000", "Field1": 10, "Field_Doc": {"f1": 0}}
{"timestamp": "2022-01-18T00:15:51.000", "Field_Doc": {"f1": 0, "f2": 1.7, "f3": 2}}
{"timestamp": "2022-01-14T00:12:21.000", "Field1": null, "Field_Doc": {"f1": undefined}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430400.html
