问题描述
我必须阅读包含以下行的 tomcat 访问日志:
[06/Nov/2020:00:43:04 +0200] /wsi/services/ServicesReadRequest 2265 10.101.101.101 200 21
尝试将文件读取为 csv,将所有列设置为字符串类型
import pandas as pd
headers = ['Timestamp','Command','IPAddr','Blank01','Blank02','Bytes','HTTPResult','ElapsedTime']
dtypes = {'Timestamp': 'str','Command': 'str','IPAddr': 'str','Blank01' : 'str','Blank02' : 'str','Bytes': 'str','HTTPResult': 'str','ElapsedTime': 'str'}
df = pd.read_csv(fpath,delimiter=' ',header=None,names=headers,dtype=dtypes,warn_bad_lines=True,error_bad_lines=False)
发生的事情是时间戳周围的方括号是由熊猫专门处理的
df['Timestamp'].head()
显示:
[06/Nov/2020:00:43:04 +0200] /wsi/services/ServicesReadRequest
如果我试图剪断字符串,它看起来像方括号的部分被忽略
df["Timestamp"].apply(lambda x: x[1:6]).head()
结果:
[06/Nov/2020:00:43:04 +0200] /wsi/s
如果我手动删除方括号,那么它会按预期工作(尽管时区与时间戳分开,但这是因为它之间有空格)。 现在的问题是如何在没有任何预处理的情况下解析文件? 是否有不包含此类副作用的 read_csv 替代方案?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)