У меня есть следующий пример файла журнала:
Timestamp : Severity : Message
2020-03-08 : INFO : First line.
2020-03-08 : INFO : child process stdout:
One
Two
Three
2020-03-08 : INFO : Last line.
ПРИМЕЧАНИЕ. В исходном файле гораздо больше столбцов и несколько знаков пунктуации.
Служба, генерирующая этот журнал, порождает дочерние процессы это может привести к сбросу их стандартного вывода (т.е. с неопределенным форматированием) в родительские журналы.
Если я попытаюсь импортировать его в Pandas, я получу следующее:
import pandas as pd
df = pd.read_csv('mini_sample.txt', sep=' : ', engine='python')
Timestamp Severity Message
0 2020-03-08 INFO First line.
1 2020-03-08 INFO child process stdout:
2 One None None
3 Two None None
4 Three None None
5 2020-03-08 INFO Last line.
Хотя Я хотел бы получить что-то вроде этого:
Timestamp Severity Message Extra
0 2020-03-08 INFO First line. None
1 2020-03-08 INFO child process stdout: One\nTwo\nThree
2 2020-03-08 INFO Last line. None
Итак, строки, которые не относятся к форматированию основного журнала (то есть, из дочернего процесса 'stdout / stderr), заканчиваются дополнительным столбец (т. е. «Extra») предыдущей строки.
Кроме того, они должны сохранять свое первоначальное форматирование (т. е. символы новой строки), чтобы его можно было легко прочитать при распечатке.