Python 熊猫:跨越多行的加载记录
我正在寻找标准的pythonic方法,将日志文件中的两种常见模式加载到pandas数据帧中 跨多行的记录:Python 熊猫:跨越多行的加载记录,python,pandas,logging,Python,Pandas,Logging,我正在寻找标准的pythonic方法,将日志文件中的两种常见模式加载到pandas数据帧中 跨多行的记录: =REPORT==== 26-Jun-2018::18:30:00 === column_1: some data column_2: {'maybe': 'json or something'} =REPORT==== 26-Jun-2018::19:30:00 === column_1: some data column_2: {'maybe': 'j
=REPORT==== 26-Jun-2018::18:30:00 ===
column_1: some data
column_2: {'maybe': 'json or something'}
=REPORT==== 26-Jun-2018::19:30:00 ===
column_1: some data
column_2: {'maybe': 'json or something',
'and': 'maybe spanning multiple lines'}
2018-01-09 20:12:38,020 INFO logname: Examining 6668121 database
2018-01-09 20:13:00,020 ERROR logname: Caught an Exception
Traceback (most recent call last):
File "test.py", line 1, in __main__
None.do_the_thing()
AttributeError: 'NoneType' object has no attribute 'getDatabase'
可能跨越多行的记录:
=REPORT==== 26-Jun-2018::18:30:00 ===
column_1: some data
column_2: {'maybe': 'json or something'}
=REPORT==== 26-Jun-2018::19:30:00 ===
column_1: some data
column_2: {'maybe': 'json or something',
'and': 'maybe spanning multiple lines'}
2018-01-09 20:12:38,020 INFO logname: Examining 6668121 database
2018-01-09 20:13:00,020 ERROR logname: Caught an Exception
Traceback (most recent call last):
File "test.py", line 1, in __main__
None.do_the_thing()
AttributeError: 'NoneType' object has no attribute 'getDatabase'
对于第一个示例,我希望得到一个数据帧,其中包含['timestamp','column_1','column_2']
对于第二个,['timestamp','log_level','logname','messagetext']
我确信有一种方法可以表示每条记录的分隔符,而不仅仅是每行的结尾,以及每条记录的内部分隔符。我认为pandas没有现成的方法来实现您想要的功能 以下是从中读取数据帧的可用方法: 您的两个示例都不遵循文本格式的规则:csv、html或json——它们有点不匹配多种格式。更复杂的是,元素分隔符和行分隔符在每行中都有所不同 从: 如果需要使用正则表达式的复杂列分隔符,则这将强制pandas使用python引擎: sep:str,默认',' 要使用的分隔符。[…]此外,分离器的长度超过 与“\s+”不同的1个字符将被解释为常规字符 表达式,还将强制使用Python解析引擎。 请注意,正则表达式分隔符容易忽略带引号的数据。正则表达式 示例:'\r\t' 然而,
lineterminator
arg只能与C解析器一起使用,而且不能是正则表达式:
线条终止符:str(长度1),默认为无
字符将文件拆分为行。仅对C解析器有效
您可能无法编写自己的解析器,这并不理想,因为这样的事情很容易出错