我正在阅读具有不同日期格式的不同日志文件。我正在使用python逐行读取文件,然后解析该行。我想解析日期行,然后将它们表达为日期对象以进行比较。
例如,假设我有两个日志格式不同的日志文件。如何将它们读入对象以将它们与已知日期进行比较。例如,假设我想在某个时间之前丢弃所有日期。
我们假设第一个日志文件只有一行:
invalid access 2015-01-04 14:23:15 on IP 5.5.5.5
如何将2015-01-04 14:23:15
读入日期对象(以便我可以进行比较)
如果日期格式不同怎么办?我怎么读?
答案 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)