国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python不規(guī)范的日期字符串處理類

2020-02-23 05:28:46
字體:
供稿:網(wǎng)友

我分析了形如19920203、199203、1992.02.03、1992.02、1992-02-03、1992-02、920203時(shí)間格式特征,列出了正則表達(dá)式如下:
代碼如下:
^((?:19|20)?/d{2})[-.]?((?:[0-1]?|1)[0-9])[-.]?((?:[0-3]?|[1-3])[0-9])?$
當(dāng)然這個(gè)表達(dá)式還不是很完善,只能做簡(jiǎn)單的切割,不能判斷日期的合法性,關(guān)于日期是否合法,我還是交給Python的時(shí)間功能來處理吧。

根據(jù)上面的正則表達(dá)式,我寫的DateParser類如下:

代碼如下:
import re
import datetime

# ***************************************************
# *
# * Description: 非標(biāo)準(zhǔn)的日期字符串處理
# * Author: wangye  <pcn88 at hotmail dot com>
# *
# ***************************************************
class DateParser(object):

    def __init__(self):
        self.pattern = re.compile(
        r'^((?:19|20)?/d{2})[-.]?((?:[0-1]?|1)[0-9])[-.]?((?:[0-3]?|[1-3])[0-9])?$'
        )

    def __cutDate(self, date, flags):
        y = date.year
        m = date.month if flags[1] else 1
        d = date.day if flags[2] else 1
        return datetime.date(y, m, d)

    def __mergeFlags(self, flags1, flags2):
        l = []
        length = min(len(flags1), len(flags2))
        for i in range(0, length):
            if flags1[i] and flags2[i]:
                l.append(True)
            else:
                l.append(False)
        return l

    def parse(self, strdate):
        """
        描述:時(shí)間解析方法。
        參數(shù):strdate 要分析的時(shí)間字符串,比如目標(biāo)時(shí)間類型datetime(1992, 2, 3)
              可以被解析的是下述字符串之一:
            19920203
            199203
            1992.02.03
            1992.02
            1992-02-03
            1992-02

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 贵溪市| 高唐县| 澜沧| 临泽县| 张掖市| 舟山市| 田林县| 苍南县| 新乡县| 时尚| 汉源县| 亳州市| 麟游县| 蓝田县| 白银市| 祁东县| 灵石县| 隆尧县| 句容市| 保德县| 武平县| 朔州市| 彭州市| 云梦县| 灵丘县| 鄂托克旗| 剑阁县| 沁阳市| 钟山县| 楚雄市| 深水埗区| 张家界市| 福建省| 渝中区| 故城县| 澳门| 根河市| 渭源县| 巴青县| 郓城县| 金昌市|