繁体   English   中英

Python日期时间模式匹配

[英]Python datetime pattern matching

我试图根据不同格式的列表来确定是否可以将字符串转换为日期。 因此,必须遍历整个列表。 如果找到匹配项,则应返回该匹配项。 如果所有尝试均返回错误,则应返回该错误。 我不太确定该怎么做,我的方法如下所示。

_DEFAULT_PATTERNS = ["%d.%m.%Y", "%y-%m-%d"]
try:
    if format == 'default':
        for p in _DEFAULT_PATTERNS:
        try:
            value = datetime.strptime(value, p).date()
        except:
            continue
except Exception:
    return ERROR

return value

您的首选是使用dateutil.parser 但是,如果解析器不能满足您的需求,请整理以下代码版本:

def parseDate(value):
    PATTERNS = ("%d.%m.%Y", "%y-%m-%d")
    for p in PATTERNS:
        try:
            return datetime.strptime(value, p).date()
        except ValueError:
            continue
    return False # No match found

或者,如果找不到匹配项,则引发异常(而不是返回False )。 这将使您的功能更类似于strptime

    raise ValueError

尝试这样的事情:

from datetime import datetime
_DEFAULT_PATTERNS = ["%d.%m.%Y", "%y-%m-%d"]
def is_castable_to_date(value):
    for p in _DEFAULT_PATTERNS:
        try:
            value = datetime.strptime(value, p).date()
            return True
        except:
            pass
    return False
print is_castable_to_date("12-12-12")
print is_castable_to_date("12.12.12")
print is_castable_to_date("12/12/12")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM