Python创建日期对象以过滤某些日期

时间:2015-02-09 21:57:08

标签: python parsing datetime

我正在阅读具有不同日期格式的不同日志文件。我正在使用python逐行读取文件,然后解析该行。我想解析日期行,然后将它们表达为日期对象以进行比较。

例如,假设我有两个日志格式不同的日志文件。如何将它们读入对象以将它们与已知日期进行比较。例如,假设我想在某个时间之前丢弃所有日期。

我们假设第一个日志文件只有一行:

invalid access 2015-01-04 14:23:15 on IP 5.5.5.5

如何将2015-01-04 14:23:15读入日期对象(以便我可以进行比较)

如果日期格式不同怎么办?我怎么读?

3 个答案:

答案 0 :(得分:1)

您可以使用datetime.datetime.strptime

In [1]: from datetime import datetime
In [2]: d = '2015-01-04 14:23:15'
In [3]: datetime.strptime(d, '%Y-%m-%d %H:%M:%S')
Out[3]: datetime.datetime(2015, 1, 4, 14, 23, 15)

对于其他格式,请查看the documentation

答案 1 :(得分:0)

dateutil通常可以解析

import dateutil.parser as p
print p.parse("2015-01-04 14:23:15")

这假设您可以隔离日期字符串

$ easy_install python-dateutil 
$ pip install python-dateutil

或者只需在https://pypi.python.org/pypi/python-dateutil/2.4.0获得,如果您需要来源......

答案 2 :(得分:0)

直接使用re模块可能比通过datetime.strptime()隐式使用它更有效(测量它以确定在您的情况下是否重要):

>>> import datetime, re   
>>> s = '2015-01-04 14:23:15'
>>> datetime.datetime(*map(int, re.findall('\d+', s)))
datetime.datetime(2015, 1, 4, 14, 23, 15)