У меня есть файл журнала с символом новой строки
Пример файла:
2019-02-12T00:01:03.428+01:00 [Error] ErrorCode {My error: "A"} - - - 00000000-0000-0000-6936-008007000000
2019-02-12T00:01:03.428+01:00 [Error] ErrorCode {My error: "A"} - - - 00000000-0000-0000-6936-008007000000
2019-02-12T00:03:23.944+01:00 [Information] A validation warning occurred: [[]] while running a file,
--- End of stack trace ---
FileNotFoundError
--- End of stack trace from previous location where exception was thrown ---
System Error
Я хочу разбить данные на три столбца, а именно Timestamp, type_code, чтобы показать, является ли событиеошибка, предупреждение или информация, а затем сообщение.
Я использовал для этого функцию разделения:
currentDict = {"date":line.split("] ")[0].split(" [")[0],
"type":line.split("] ")[0].split(" [")[1],"text":line.split(" ]")[0].split("] ")[1]}
Чтобы разделить данные в заданных столбцах, все работает нормально, но выдает ошибку, если у меня естьзапись, показанная ниже
2019-02-12T00:03:23.944+01:00 [Information] A validation warning occurred: [[]] while running a file,
--- End of stack trace ---
FileNotFoundError
--- End of stack trace from previous location where exception was thrown ---
System Error
, и второй подход использует регулярное выражение
with open(name, "r") as f:
for lines in f:
data_matcher = re.findall("^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}.\\d{1,3}[+]?\\d{1,2}:\\d{1,2}",
lines)
![Expected Output](https://i.stack.imgur.com/bsMav.png)
, используя это, я могу толькоизвлечь метку времени, но застрял в том, как извлечь рядом с полями.