2017-01-26 52 views
0

有人会知道一个正则表达式字符串或从这个字符串获取日期和时间的另一种方法为变量吗?字符串的位置可能会改变,所以line和char no将不起作用。这有点超出我的能力,可以做到吗?Python - 从字符串中查找日期

感谢

Dear Customer, 

(Call Transferred) Start Time & Date: 00:05 Monday 6th February 2017    
Completion Time & Date: 06:00 Monday 6th February 2017     

Details of Work: 
+2

使用'DateTime' –

+0

你建议使用正则表达式 - 你有什么尝试? – asongtoruin

回答

2

这工作与示例报告您所提供。它同时返回开始和结束日期,并应处理一天的日后缀,如“日”,“第三”等

import re 

import dateutil.parser 

REPORT = \ 
"""Dear Customer, 

(Call Transferred) Start Time & Date: 00:05 Monday 6th February 2017 
Completion Time & Date: 06:00 Monday 6th February 2017 

Details of Work:""" 


def parse_report(data): 
    dates = [] 

    for pattern in ['(?<=Start Time & Date:).*', '(?<=Completion Time & Date:).*']: 
     date = dateutil.parser.parse(re.search(pattern, data).group(0)) 
     dates.append(date) 

    return dates 


if __name__ == '__main__': 
    start, completion = parse_report(REPORT) 
    print('Started: {}, Completed: {}'.format(start, completion)) 

输出

Started: 2017-02-06 00:05:00, Completed: 2017-02-06 06:00:00 

编辑

更新为使用dateutil.parser而不是简化代码(感谢asongtoruin的建议)。

+1

你可以使用'dateutil.parser.parse()'而不是'datetime.strptime()'去除'filter_day_of_month_suffix()'的需要? – asongtoruin

+0

@ason​​gtoruin谢谢,不知道那个包。 – Tagc

+0

谢谢,工作一种享受 – AlexW