我试图根据不同格式的列表来确定字符串是否可以转换为日期。因此,必须循环整个列表。如果找到匹配项,则应返回该匹配项。如果所有尝试都返回错误,则应返回该错误。我不太确定如何做到这一点,我的方法如下所示。
_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/