国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 城固县| 凯里市| 香港 | 曲水县| 达拉特旗| 黎川县| 东丽区| 乐陵市| 昆明市| 邓州市| 易门县| 吉安市| 香河县| 资中县| 江津市| 邵武市| 库伦旗| 抚顺市| 千阳县| 德令哈市| 乐安县| 青龙| 绥芬河市| 资讯 | 牟定县| 玛曲县| 邵东县| 琼海市| 安岳县| 竹溪县| 高台县| 齐齐哈尔市| 海淀区| 舒兰市| 佳木斯市| 时尚| 万安县| 开江县| 大兴区| 乌拉特中旗| 涟源市|