首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用python解析常用日志日期字符串

用python解析常用日志日期字符串
EN

Stack Overflow用户
提问于 2012-09-17 22:28:17
回答 1查看 2.7K关注 0票数 3

问题是:

我将在Python 2.6中解析一个日志文件。在将common log日期字符串解析为时间对象时出现问题:

13/Sep/2012:06:27:18 +0200

我已经尝试过的东西

使用dateutils.parser.parse

我已经尝试使用dateutils.parser.parse,但它无法解析它,出现以下错误:

ValueError: unknown string format

使用time.strptime

我尝试使用格式字符串%d/%b/%Y:%H:%M:%S %ztime.strptime,但在解析时区时遇到了问题:

ValueError: 'z' is a bad directive in format '%d/%b/%Y:%H:%M:%S %z'

有人知道错误在哪里吗?或者这只是一种错误的方法?

最终解决方案

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

代码语言:javascript
运行
复制
time.strptime(datestring[:-6], '%d/%b/%Y:%H:%M:%S')

不想使用dateutils的原因是dateutilsstrptime (实际上是调用C函数)慢得多。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-17 22:37:35

这是我所看到的:

  • dateutil不喜欢将时间附加到日期后面(请参见this question)

)您的底层C实现不支持

  • %z指令

一个快速而简单的解决方案(尽管不是很优雅):

代码语言:javascript
运行
复制
>>> 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))

提醒一下,replace的第三个可选参数是max replacement count

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12461449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档