首页 > 解决方案 > 将文件记录到数据框中

问题描述

我有一个日志文件:

20-04-21 15:04:54.355 -07 000000105 INF: Y Motor: Loading Y Motion Profile for 0.830 mm

20-04-21 15:04:54.355 -07 000000105 INF: Y Motor: The Y Motion Profile for 0.830 mm is already loaded, skipping

20-04-21 15:04:54.355 -07 000000105 INF: SipperMotor: Set Sipper Position Down

20-04-21 15:04:54.355 -07 000000105 INF: FPGA: Xmit SIPDOWN\n [SipperMotor]

20-04-21 15:05:07.665 -07 000000136 INF: FPGA: Recv SIPDOWN

20-04-21 15:05:07.665 -07 000000105 INF: FPGA: 'SIPDOWN' command took 0 ms to send, 13300 ms to get response, and 13305 ms overall
  1. 没有标题
  2. 我想将第一列拆分为日期##-##-##
  3. 第二列应该是##:##:##.###
  4. 第三列应该是 -##
  5. 第四列应为 XXX:
  6. 第五列应将其他所有内容作为文本

标签: pythonpandasfilelogging

解决方案


我会将文件作为单列读取并提取:

df = pd.read_csv('file.txt', header=None, sep='\t')
df = df[0].str.extract('(\S+) (\S+) (\S+) (\S+) (.*)$')

输出:

    0         1               2          3  4
--  --------  ------------  ---  ---------  ----------------------------------------------------------------------------------------------
 0  20-04-21  15:04:54.355  -07  000000105  INF: Y Motor: Loading Y Motion Profile for 0.830 mm
 1  20-04-21  15:04:54.355  -07  000000105  INF: Y Motor: The Y Motion Profile for 0.830 mm is already loaded, skipping
 2  20-04-21  15:04:54.355  -07  000000105  INF: SipperMotor: Set Sipper Position Down
 3  20-04-21  15:04:54.355  -07  000000105  INF: FPGA: Xmit SIPDOWN\n [SipperMotor]
 4  20-04-21  15:05:07.665  -07  000000136  INF: FPGA: Recv SIPDOWN
 5  20-04-21  15:05:07.665  -07  000000105  INF: FPGA: 'SIPDOWN' command took 0 ms to send, 13300 ms to get response, and 13305 ms overall

推荐阅读