编程语言
首页 > 编程语言> > 使用python解析常见日志日期字符串

使用python解析常见日志日期字符串

作者:互联网

问题:

我要解析Python 2.6中的日志文件.将common log日期字符串解析为时间对象时出现了问题:

2012年9月13日:06:27:18 0200

我已经尝试过的

使用dateutils.parser.parse

我已经尝试使用dateutils.parser.parse,但是它解析失败,并出现以下错误:

ValueError:未知的字符串格式

使用time.strptime

我尝试使用格式字符串%d /%b /%Y:%H:%M:%S%z的time.strptime,但在解析时区时遇到了麻烦:

ValueError:’z’是格式为’%d /%b /%Y:%H:%M:%S%z’的错误指令

有谁知道错误在哪里?还是只是错误的方法?

最终解决方案

最后,我决定使用time.strptime剥离时区信息:

time.strptime(datestring[:-6], '%d/%b/%Y:%H:%M:%S')

不想使用dateutils的原因是dateutils比strptime(实际上调用C函数)要慢得多.

解决方法:

这是我看到的:

> dateutil不喜欢将时间附加到日期之后
>基础C实现不支持%z指令(请参见this question)

快速简便的解决方案(尽管并不十分优雅):

>>> s = '13/Sep/2012:06:27:18 +0200'
>>> dateutil.parser.parse(s.replace(':', ' ', 1))
datetime.datetime(2012, 9, 13, 6, 27, 18, tzinfo=tzoffset(None, 7200))

提醒一下,要替换的可选第三个参数是max replacement count.

标签:python-2-6,datetime,python,parsing
来源: https://codeday.me/bug/20191031/1979115.html