解析具有未知分隔符的行

时间:2014-05-13 17:19:02

标签: python parsing date

有什么办法,如何解析包含某种格式和值的日期的行?我正在寻找一般解决方案。我写脚本,应该验证字符串。我的输入是一些字符串和时间格式。例如:

以第一个文件和已知时间格式

[10:17:21 20.04.1911] 890.584
[%H:%M:%S %d.%m.%Y]

以第二个文件和已知时间格式

10:17:21-20.04.1911 890.584
%H:%M:%S-%d.%m.%Y

以第三个文件和已知的时间格式

(20-04-1911) 890.584
(%d-%m-%Y)

以第四个文件和已知的时间格式

20-04-1911 10:17:21 890.584
%d-%m-%Y %H:%M:%S

等。
我已经有了根据时间格式从日期获取时间戳的功能,但我不知道如何从该行解析日期。
有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

我会在这里使用try

import datetime

def parse_date(line):
    for template, length in [("[%H:%M:%S %d.%m.%Y]", 21), 
                             ("%H:%M:%S-%d.%m.%Y", 19), ...]:
        try:
            return datetime.datetime.strptime(line[:length], template)
        except ValueError:
            pass

这将通过所有模板return datetime对象,如果它可以从linereturn None中提取一个,如果没有模板匹配的话。