Python 日期时间模式匹配

标签 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

关于Python 日期时间模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823425/

相关文章:

Python - 如何使用多个分隔符拆分列值

python - Python中从URL读取XML文件

python - [sys.argv[0]] 在 python 中的含义

c# - 删除前导零形式月份 C#

python - 如何根据日期有条件地设置数据框的值

Python33, flask : Lot of Errors starting Hello World

python - json与python中另一个json的递归比较

mysql - 复杂的未知日期/时间表示

javascript - 将基于用户位置的特定日期和时间转换为 utc 日期和时间

sql - 为什么 LEFT(Datetime,1) 给我 "J"?