python验证日期的有效方法

时间:2017-10-29 06:32:24

标签: python validation datetime

我有一个大文件,日期为%m%d%Y格式,即2013年12月12日的12012013。

我必须执行两件事:

1)验证日期
2)按照按时间顺序排列的格式将其存储在列表中

用于验证:

        try:
            parsedDate = datetime.strptime(date, '%m%d%Y')
            return parsedDate
        except:
            return None'

使用DateTime需要花费大量时间来解析日期。由于格式是mmddyyyy,我可以在不使用datetime的情况下验证它吗?

2)按时间顺序:我不想将它转换为datetime然后对它进行排序,有没有办法可以使用字符串对它进行排序。我已经检查了很多答案,但几乎所有答案都假定你有一个列表然后对其进行排序。

我想以排序格式插入它吗?

2 个答案:

答案 0 :(得分:0)

  1. datetime模块非常好,如果您想要任何其他选项可以验证为reg表达式,请检查:match dates using python regular expressions

  2. 要对日期进行排序而不转换为datetime。只需将其转换为格式yyyymmdd,然后进行字符串排序或只创建一个空列表,然后根据值大或小将字符串附加到正确的位置。

  3. 请求您自己尝试:)

答案 1 :(得分:0)

如果格式为%m%d%Y,则效率最高的是使用RegEx(有一些关于此的分析)。

例如:

import re
import datetime

match_date = re.compile(r'(\d{2})(\d{2})(\d{4})$').match

text = '12012013'
mo = match_date(text)

if mo:
    date = datetime.date(int(mo.group(3)), int(mo.group(1)), int(mo.group(2)))
    print(date)
    # -> 2013-12-01

这样,RegEx将执行第一级过滤,date构造函数执行第二级(有例外)。当然,您可以改进您的RegEx,这对于演示来说是微不足道的。

如果您事先知道您的日期有效,则可以避免转换为date并使用tuple(年,月,日)进行排序,而不是使用{{1} }。