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所以我有一个像上面这样的日志文件。这是日志的样本。它们都遵循这种格式。我能把它分解成我不同的领域。我在想如果有人能帮上忙的话。
这些是各种列和行:
COUNT|HEIGHT|MESSAGE_TITLE /BODY\SCHHO/DATETIME/NAME
学校缺席123他是.诺兰时间:2020-07-14 12:34:08
我从一开始就没有取得任何进展。
进口熊猫为PD进口NumPy为np进口glob进口os进口JSON进口wx从DateTime进口DateTime进口DateTime作为dt进口时间为t
导入matplotlib.pyplot作为可编程逻辑器件
进口xlsxwriter
以open('STUDENT_PROFILE.log')作为f:
log = f.readlines()
print(log)
len(log)
n = len(log)在范围内(N):
log[i] = log[i].strip()Log6.拆分(‘]’
日志6.拆分(‘]’)7
Log6.拆分(‘]’)7.上级()
S=log.split(‘]’).strip(‘[’‘)
dtfmt ='%Y-%m-%d %I:%M:%S‘# %H -> 24小时,%i- hours 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
列=“计数”、“高度”、“MESSAGE_TITLE”、“BODY”、“SCHHOL”、“DATETIME”、“NAME”
df‘’delta_t‘=df.datetime - df.datetime
df‘’delta_t_秒‘=0
用于范围内的I(df.shape):
df.ix[i,'delta_t_seconds'] = df.delta_t.iloc[i].secondsdf.to_csv('test_log.csv',index=False)
任何想法..。
发布于 2020-07-19 06:40:15
如果没有任何限制,这应该是可行的。注意有5 5的部分,您需要处理添加句点。Regex只是匹配一组模式;因此它的工作不是添加或删除字符。
此外,我注意到您正在逐行阅读,并对它们进行迭代。为了使这个模式工作,它假设一个多行字符串,所以您需要用换行符加入数组。
这绝不是一个优雅的解决方案,也绝不是一个具有有限示例输入或约束的防弹解决方案。
模式
\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]+)请参阅演示这里。
https://stackoverflow.com/questions/62976788
复制相似问题