Создать Json из необработанных данных из WSS Symantec? - PullRequest
0 голосов
/ 01 ноября 2019

Мне нужно отфильтровать данные строк из Symantec WSS, я получил только значения без ключей. Поэтому я думаю, что для себя попробуйте действие и разделите все пробелы.

Пример необработанных данных:

9777 10/30/2019 08:10:10 192.168.1.2 "Virus Found" Scott Sampson

Я хочу получить результат JSON:

{
"pid":"9777",
"timestamp":"10/30/2019 08:10:10",
"ip":"192.168.1.2",
"message":"Virus Found",
"first_name":"Scott",
"first_name":"Sampson"
}

Я начал свойкод, но я застрял:

data = r'''9777 10/30/2019 08:10:10 192.168.1.2 "Virus Found" Scott Sampson'''
ls1 = []
text = ""
for x in data:
    if x is '"':
        ls1.append('"')
    else:
        ls1.append(x)
print(ls1)

1 Ответ

0 голосов
/ 01 ноября 2019

Попробуйте регулярное выражение. Используя именованные группы, вы можете напрямую получить словарь из объекта сопоставления.

import json
import re

pattern = re.compile(
    r'(?P<pid>\d+)\s(?P<timestamp>\d{1,2}\/\d{1,2}\/\d{4}\s\d{2}:\d{2}:\d{2})\s(?P<ip>(?:\d+\.?)+)\s\"(?P<message>('
    r'?:\w+\s?)+)\"\s(?P<first_name>\w+)\s(?P<last_name>\w+)')
match = pattern.match(r'''9777 10/30/2019 08:10:10 192.168.1.2 "Virus Found" Scott Sampson''')
print(json.dumps(match.groupdict()))

regex101 пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...