.logs 文件到 .csv 文件 pandas

.logs file to .csv file wih pandas

    33 HEIGHT  5 5 INFO ABSENT FROM SCHOOL 123 

    He has been absent for 48 hours

                                                                     

     NOLAN Time:2020-07-14 12:34:08 PAUL

所以我有一个类似于上面的日志文件。这是日志示例。他们都遵循这种格式。我能够将其分解为不同的领域。我在想是否有人可以在 pandas.

中提供帮助

这些是各种列和行:

计数|身高|MESSAGE_TITLE |BODY |SCHHO|日期时间 |姓名

33 | 5.5 |信息缺课 123|他是...|NOLAN|时间:2020-07-14 12:34:08|PAUL

我已经开始了,没有取得任何进展..

导入 pandas 作为 PD 将 NumPy 导入为 np 导入 glob 导入 os 导入 JSON 导入 wx 从日期时间导入日期时间 将 DateTime 导入为 dt 将时间导入为 t

将 matplotlib.pyplot 导入为 plt

导入 xlsxwriter

打开('STUDENT_PROFILE.log') 作为 f:

log = f.readlines()
print(log)

len(log)

n = len(log)

我在范围内(n):

log[i] = log[i].strip()

log[6].split(']')

log[6].split(']')[7]

log[6].split(']')[7].upper()

s = log[0].split(']')[0].strip('[')

dtfmt ='%Y-%m-%d %I:%M:%S' # %H -> 24 小时,%I-> 12 小时

dt2 = datetime.strptime(s,dtfmt)

日志中的行:

s1=line.split(']')[0].strip('[')

dt2 = dt.strptime(s1, dtfmt)

col1.append(dt2)

s= line.split(']')[1].strip().split(':')

col2.append(s[0])

if len(s) == 7:

    col3.append(s[1])
    col4.append(s[2])
    col5.append(s[3])
    col6.append(s[4])
    col7.append(s[5])
    col8.append(s[6])

else:

    col8.append(np.nan)

df = pd.DataFrame([col1,col2,col3,col4,col5,col6,col7,col8])

df = df.T

df.columns=['COUNT','HEIGHT','MESSAGE_TITLE','BODY','SCHHOL','DATETIME','NAME']

df['delta_t'] =df.datetime - df.datetime[0]

df['delta_t_seconds'] = 0

我在范围内(df.shape[0]):

df.ix[i,'delta_t_seconds'] = df.delta_t.iloc[i].seconds

df.to_csv('test_log.csv', index=False)

任何想法...

在没有任何限制的情况下,这应该可行。请注意 5 5 的部分,您需要处理添加句点。正则表达式只是匹配一组模式;因此它的工作不是添加或删除字符。

此外,我注意到您正在逐行阅读并遍历它们。为了使此模式起作用,它假定一个多行字符串,因此您需要使用换行符连接数组。

这绝不是一个优雅的解决方案,也绝不是具有有限示例输入或约束的防弹解决方案。

模式

\s+(\d+)\s+HEIGHT\s+(\d\s\d{1,2})\s+([^\n\r]+)\W+([^\n]+)\W+([A-Z]+)\sTime:(\S+\s+\S+)\s+([A-Z]+)

查看演示 here