如何让Python Arrow库严格校验日期时间字符串格式?
Arrow库如何强制严格匹配日期时间格式校验?
我尝试用Python的Arrow库校验输入的日期时间字符串,发现部分格式不匹配的场景没有抛出异常,导致无法有效校验:
符合预期的校验场景
当格式与字符串完全匹配时,解析正常:
>>> a=arrow.get('2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss') >>> >>> a=arrow.get('Wednesday 2023-12-06 10:01:02','dddd YYYY-MM-DD HH:mm:ss') >>> >>> a=arrow.get('Wed 2023-12-06 10:01:02','ddd YYYY-MM-DD HH:mm:ss')
当格式与字符串不匹配时,部分场景会抛出ParserMatchError:
>>> a=arrow.get('Wed 2023-12-06 10:01:02','dddd YYYY-MM-DD HH:mm:ss') arrow.parser.ParserMatchError: Failed to match 'dddd YYYY-MM-DD HH:mm:ss' when parsing 'Wed 2023-12-06 10:01:02'
不符合预期的校验场景
但有些格式明显不匹配的情况却能成功解析:
>>> a=arrow.get('Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss') >>> >>> a=arrow.get('Wed Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss')
希望所有格式不完全匹配的场景都能抛出异常,请问如何让Arrow强制严格匹配格式?
解决方案
使用Arrow的get方法时,传入strict=True参数即可启用严格匹配模式,此时任何与指定格式不完全匹配的字符串都会抛出ParserMatchError。
测试示例:
>>> a=arrow.get('Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss', strict=True) arrow.parser.ParserMatchError: Failed to match 'YYYY-MM-DD HH:mm:ss' when parsing 'Wednesday 2023-12-06 10:01:02' >>> a=arrow.get('Wed Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss', strict=True) arrow.parser.ParserMatchError: Failed to match 'YYYY-MM-DD HH:mm:ss' when parsing 'Wed Wednesday 2023-12-06 10:01:02'
严格匹配模式下,只有字符串和格式完全一致时才能成功解析,完全符合校验需求。
内容的提问来源于stack exchange,提问作者user1599391
相关产品推荐
相关产品推荐

