Отдельные записи с определенной парой ключ / значение из файла формата jsonlines - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно проанализировать журналы в формате jsonlines . Они хранятся в сжатом формате (.gz). Мне нужно прочитать каждую строку из файла, который является допустимой записью JSON, и переместить запись с соответствующим ключом «событие» в другой файл.

С помощью модуля jsonlines я могу прочитать файл, но всякий раз, когда в какой-либо записи JSON (или любой строке в файле) отсутствует клавиша "события", выдается ошибка. Не во всех записях JSON в файле будет присутствовать ключ «событие».

Вот пример содержимого из одного файла:

{"Product":"apple","event":"login","timestamp":"2018-09-27T17:35:55.835Z","version":2}
{"Product":"apple","timestamp":"2018-09-27T17:35:55.835Z","Id":"faf91826-ebc9-4242-996f-d52969bec2d5","version":2}
{"Product":"apple","event":"LandingPage","timestamp":"2018-09-27T17:14:22.998Z","Id":"88016b33-72d7-458e-8de8-f76241f4b681","version":2}
{"Product":"apple","event":"LandingPage","timestamp":"2018-09-27T17:38:55.835Z","version":2}
{"Product":"apple","event":"login","timestamp":"2018-09-27T17:37:55.835Z","version":2}
import jsonlines
import json
import os


with jsonlines.open('/Users/logfile') as reader:
    for obj in reader:
        try:
            #        my_json_dict = json.loads(obj)
            value1 = obj.get['event', 'default']
            print(value1)
            if value1 == 'login'
        except NameError as ee:
            print(type(ee))
            print(ee)

После анализа около 1 тыс. Файлов jsonlines, создаваемых каждый день, мой вывод будет содержать три файла, содержащих записи json для конкретных событий:

login.jsonl (with "event":"login")   
LandingPage.jsonl (with "event":"LandingPage")   
original source file (with missing "event" key) 
...