基于python-timeArray的时间信息提取函数

如果是从一个长文本里面提取时间信息,一般采用的方法是re模块进行匹配。但这篇文章的方法函数是基于另一种特殊的业务场景下的——

一些大数据分析的业务对于时间信息要求的精度比较高,但之前在数据存储的时候,没有存储时间戳,而是把时间格式化后存储了,而且因为系统开发前后交接不完整的问题,导致时间存储的格式还不一样,总的来说分为了以下几种情况:

2019年06月17日 21:51 转赞人数超过10
2018年04月19日 11:22
04月12日 10:54
2019-01-27
null

所以要把这些凌乱的时间数据重新按年月日时分整理,就需要分情况讨论用if语句判断处理,同时,像第一个日期数据那样有干扰信息的,还需要结合re模块进行匹配替换。

import re
import time

def pickdate(date):
    #正则过滤部分多余信息(根据业务需要)
    ch = re.compile('转赞人数超过[1-9][0-9]').findall(date)
    if ch:date = date.replace(ch[0],'').strip()
    if ':' in date:
        if '年'  not in date:
            date = '2019年'+ date
        timeArray = time.strptime(date, "%Y年%m月%d日 %H:%M") #2017年03月28日 13:39
    elif '-' in date:timeArray = time.strptime(date, "%Y-%m-%d")#2019-01-27
    else:
        exit
        return 'Time format error or time does not exist.'

    rst = timeArray.tm_year,timeArray.tm_mon,timeArray.tm_mday,timeArray.tm_hour,timeArray.tm_min
    return rst

print (pickdate('2019年06月17日 21:51 转赞人数超过10'))
print (pickdate('2018年04月19日 11:22'))
print (pickdate('04月12日 10:54'))
print (pickdate('2019-01-27'))
print (pickdate('这是一个错误的时间'))
print (pickdate(''))
#运行结果,返回一个list
(2019, 6, 17, 21, 51)
(2018, 4, 19, 11, 22)
(2019, 4, 12, 10, 54)
(2019, 1, 27, 0, 0)
Time format error or time does not exist.
Time format error or time does not exist.
Share

You may also like...