python - Throw ValueError for two digit year dates with dateutil.parser.parse -


while doing data cleaning, noticed dateutil.parser.parse failed reject malformed date, thinking first number in 2 digit year. can library forced treat 2 digit years invalid?

example:

from dateutil.parser import parse parse('22-23 february') 

outputs:

datetime.datetime(2022, 2, 23, 0, 0) 

i managed work around passing custom dateutil.parser.parserinfo object via parserinfo parameter dateutil.parser.parse. luckily, dateutil.parser.parserinfo has convertyear method can overloaded in derived class in order perform validations on year.

from dateutil.parser import parse, parserinfo  class notwodigityearparserinfo(parserinfo):     def convertyear(self, year, century_specified=false):         if year < 100 , not century_specified:             raise valueerror('two digit years not supported.')         return parserinfo.convertyear(self, year, century_specified)  parse('22-23 february', parserinfo = notwodigityearparserinfo()) 

outputs:

traceback (most recent call last):   file "<stdin>", line 1, in <module>   file "/usr/local/lib/python3.5/site-packages/dateutil/parser.py", line 1162, in parse     return parser(parserinfo).parse(timestr, **kwargs)   file "/usr/local/lib/python3.5/site-packages/dateutil/parser.py", line 552, in parse     res, skipped_tokens = self._parse(timestr, **kwargs)   file "/usr/local/lib/python3.5/site-packages/dateutil/parser.py", line 1055, in _parse     if not info.validate(res):   file "/usr/local/lib/python3.5/site-packages/dateutil/parser.py", line 360, in validate     res.year = self.convertyear(res.year, res.century_specified)   file "<stdin>", line 4, in convertyear valueerror: 2 digit years not supported. 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -