Python DateTime模式匹配



我试图根据不同格式的列表确定是否可以将字符串作为日期施放。因此,必须将整个列表循环过。如果发现比赛,则应返回该匹配。如果所有尝试返回错误,则应返回该错误。我不太确定该怎么做,可以在下面看到我的方法。

_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")

最新更新