Python 使dateutil解析器产生不明确日期的错误

Python 使dateutil解析器产生不明确日期的错误,python,python-dateutil,Python,Python Dateutil,用于解析给定字符串并将其转换为datetime.datetime对象。它处理模棱两可的日期,比如“2-5-2013”,允许以某种格式为准 如果解析器遇到不明确的日期,它是否可能引发错误?我想这需要修改源代码(),但如果有一种方法不需要编辑源代码,只需要重新定义某些函数,那也太好了 当前行为: >>> from dateutil import parser >>> parser.parse("02-03-2013") datetime.datetime(2013

用于解析给定字符串并将其转换为
datetime.datetime
对象。它处理模棱两可的日期,比如“2-5-2013”,允许以某种格式为准

如果解析器遇到不明确的日期,它是否可能引发错误?我想这需要修改源代码(),但如果有一种方法不需要编辑源代码,只需要重新定义某些函数,那也太好了

当前行为:

>>> from dateutil import parser
>>> parser.parse("02-03-2013")
datetime.datetime(2013, 2, 3, 0, 0)
>>> from dateutil import parser
>>> parser.parse("02-03-2013")
Traceback (most recent call last):
..
ValueError: The date was ambiguous...<some text>
期望的行为:

>>> from dateutil import parser
>>> parser.parse("02-03-2013")
datetime.datetime(2013, 2, 3, 0, 0)
>>> from dateutil import parser
>>> parser.parse("02-03-2013")
Traceback (most recent call last):
..
ValueError: The date was ambiguous...<some text>
来自dateutil导入解析器的
>
>>>parser.parse(“02-03-2013”)
回溯(最近一次呼叫最后一次):
..
ValueError:日期不明确。。。

最好的方法可能是编写一个方法,检查3种不同的不明确情况的相等性:

from dateutil import parser

def parse(string, agnostic=True, **kwargs):
    if agnostic or parser.parse(string, **kwargs) == parser.parse(string, yearfirst=True, **kwargs) == parser.parse(string, dayfirst=True, **kwargs):
        return parser.parse(string, **kwargs)
    else:
        raise ValueError("The date was ambiguous: %s" % string)

你能用猴子修补解析方法吗?这是一种很自然但很有效的方法;给我留下了深刻的印象(并为我自己没有想到这一点而感到羞愧)。谢谢我认为这也是正确的逻辑。此外,如果您只希望某些日期时间被视为不可接受,那么请更改条件的逻辑以完全匹配可接受的内容。我添加了更多的登录,以允许禁用此检查以及转发关键字参数。