Class 将日期时间字符串转换为整数(秒),然后添加毫秒

Class 将日期时间字符串转换为整数(秒),然后添加毫秒,class,parsing,datetime,python-2.7,logfile,Class,Parsing,Datetime,Python 2.7,Logfile,我正在编写一个程序,它从日志文件中提取一行,对其进行解析,并以简化的形式返回解析后的数据。我目前的主要问题是我应该用什么方法解析我的datetime stirngs。下面是日志中的一行示例 日志文件示例: 2012-06-12 14:02:16,341 [main] INFO --- 2012-06-12 14:02:16,509 [main] INFO --- 2012-06-12 14:02:17,000 [main] INFO --- 2012-06-12 14:02:17,112 [ma

我正在编写一个程序,它从日志文件中提取一行,对其进行解析,并以简化的形式返回解析后的数据。我目前的主要问题是我应该用什么方法解析我的datetime stirngs。下面是日志中的一行示例

日志文件示例:

2012-06-12 14:02:16,341 [main] INFO ---
2012-06-12 14:02:16,509 [main] INFO ---
2012-06-12 14:02:17,000 [main] INFO ---
2012-06-12 14:02:17,112 [main] INFO ---
2012-06-12 14:02:20,338 [main] INFO ---
2012-06-12 14:02:21,813 [main] INFO ---
到目前为止,我要解析的代码(非常粗糙):

因此,基本上(如果您无法从我糟糕的代码中推断),我正在使用正则表达式解析字符串以获取日期时间。我也一直在阅读关于strtime的文章,这也是一个可能的解决方案。最后,我需要将datetime解析为毫秒,然后将其添加到datetime中的毫秒整数(用逗号分隔)


我确信这个问题非常复杂,我提前道歉。谢谢你的帮助

下面是一个如何解析行的示例:

>>> datetime.datetime.strptime('2012-06-12 14:02:16,341' + '000', '%Y-%m-%d %H:%M:%S,%f')
datetime.datetime(2012, 6, 12, 14, 2, 16, 341000)
>>> # A line from the logfile.
>>> line = "2012-06-12 14:02:16,341 [main] INFO ---"
>>> # Parse the line.
>>> m = re.match(r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),(\d{3}) \[([^]]*)\] (\S+) (.*)", line)
>>> timestamp, line_number, filename, severity, message = m.groups()
>>> # Show the various captured values.
>>> timestamp
'2012-06-12 14:02:16'
>>> line_number
'341'
>>> filename
'main'
>>> severity
'INFO'
>>> message
'---'

这太完美了。我唯一的问题是,如果我让程序打开实际的日志文件,而不是简单地提供一个字符串,我将如何将其应用到我当前的代码中?只需在第二个空格上拆分。我明白了。这会取代我的正则表达式吗?还是有点困惑。
>>> # A line from the logfile.
>>> line = "2012-06-12 14:02:16,341 [main] INFO ---"
>>> # Parse the line.
>>> m = re.match(r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),(\d{3}) \[([^]]*)\] (\S+) (.*)", line)
>>> timestamp, line_number, filename, severity, message = m.groups()
>>> # Show the various captured values.
>>> timestamp
'2012-06-12 14:02:16'
>>> line_number
'341'
>>> filename
'main'
>>> severity
'INFO'
>>> message
'---'