使用dateutil.parser.parse将ValueError抛出两位数的年份日期

米海·托多(Mihai Todor)

在进行一些数据清理时,我注意到它dateutil.parser.parse未能拒绝某个格式错误的日期,以为其中的第一个数字是两位数的年份。可以强制将此库视为两位数的年份无效吗?

例子:

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

输出:

datetime.datetime(2022, 2, 23, 0, 0)
米海·托多(Mihai Todor)

我设法通过将自定义dateutil.parser.parserinfo对象通过parserinfo参数传递给来解决此问题dateutil.parser.parse幸运的是,dateutil.parser.parserinfo有一个convertyear方法可以在派生类中重载,以便在年度中执行额外的验证。

from dateutil.parser import parse, parserinfo

class NoTwoDigitYearParserInfo(parserinfo):
    def convertyear(self, year, century_specified=False):
        if year < 100 and not century_specified:
            raise ValueError('Two digit years are not supported.')
        return parserinfo.convertyear(self, year, century_specified)

parse('22-23 February', parserinfo = NoTwoDigitYearParserInfo())

输出:

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: Two digit years are not supported.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用dateutil.parser解析日期字符串时出错

来自分类Dev

Python- Parser Dateutil中的今天的日期

来自分类Dev

使用dateutil.parser解析不完整的日期时,如何将day设置为1?

来自分类Dev

使用Regexextract从Google表格中的文本中提取日,月,两位数年份

来自分类Dev

dateutil.parser的奇怪行为

来自分类Dev

Python dateutil.parser.parse首先解析月份,而不解析日期

来自分类Dev

修改dateutil.parser.parse参数以更正日期错误标识

来自分类Dev

为什么调用dateutil.parser.parse表示十一月是十二月?

来自分类Dev

用两位数的年份日期格式定义年份

来自分类Dev

如何在R中使用Stringr将一位数字替换为两位数字

来自分类Dev

如何在R中使用Stringr将一位数字替换为两位数字

来自分类Dev

如何使用jQuery获取最后两位数字

来自分类Dev

使用php删除一两位数字的行

来自分类Dev

如何使用NSNumberFormatter用两位数舍入Int?

来自分类Dev

使用php删除一两位数字的行

来自分类Dev

PHP用两位数的年份转换日期

来自分类Dev

如何将年份为两位数的德语日期格式转换为 UTC 格式?

来自分类Dev

如何使用dateutil.tz使原始日期时间知道?

来自分类Dev

如何使用 Lib 'dateutil' 转换日期字符串?

来自分类Dev

自定义dateutil.parser世纪推理逻辑

来自分类Dev

dateutil.parser - 用点分隔小时和分钟

来自分类Dev

ModuleNotFoundError: 没有名为“dateutil.parser”的模块;'dateutil' 不是一个包

来自分类Dev

在Arcgis JS API中的何处使用parser.parse

来自分类Dev

解析两位数的日期

来自分类Dev

如何在Unix中使用sed命令两位数?

来自分类Dev

通过在PowerShell中使用拆分方法获得前两位数字

来自分类Dev

通过在PowerShell中使用拆分方法获得前两位数字

来自分类Dev

在Python中使用嵌套循环的两位数乘法表

来自分类Dev

如何使用System.printf在十进制后仅输出两位数字?

Related 相关文章

  1. 1

    使用dateutil.parser解析日期字符串时出错

  2. 2

    Python- Parser Dateutil中的今天的日期

  3. 3

    使用dateutil.parser解析不完整的日期时,如何将day设置为1?

  4. 4

    使用Regexextract从Google表格中的文本中提取日,月,两位数年份

  5. 5

    dateutil.parser的奇怪行为

  6. 6

    Python dateutil.parser.parse首先解析月份,而不解析日期

  7. 7

    修改dateutil.parser.parse参数以更正日期错误标识

  8. 8

    为什么调用dateutil.parser.parse表示十一月是十二月?

  9. 9

    用两位数的年份日期格式定义年份

  10. 10

    如何在R中使用Stringr将一位数字替换为两位数字

  11. 11

    如何在R中使用Stringr将一位数字替换为两位数字

  12. 12

    如何使用jQuery获取最后两位数字

  13. 13

    使用php删除一两位数字的行

  14. 14

    如何使用NSNumberFormatter用两位数舍入Int?

  15. 15

    使用php删除一两位数字的行

  16. 16

    PHP用两位数的年份转换日期

  17. 17

    如何将年份为两位数的德语日期格式转换为 UTC 格式?

  18. 18

    如何使用dateutil.tz使原始日期时间知道?

  19. 19

    如何使用 Lib 'dateutil' 转换日期字符串?

  20. 20

    自定义dateutil.parser世纪推理逻辑

  21. 21

    dateutil.parser - 用点分隔小时和分钟

  22. 22

    ModuleNotFoundError: 没有名为“dateutil.parser”的模块;'dateutil' 不是一个包

  23. 23

    在Arcgis JS API中的何处使用parser.parse

  24. 24

    解析两位数的日期

  25. 25

    如何在Unix中使用sed命令两位数?

  26. 26

    通过在PowerShell中使用拆分方法获得前两位数字

  27. 27

    通过在PowerShell中使用拆分方法获得前两位数字

  28. 28

    在Python中使用嵌套循环的两位数乘法表

  29. 29

    如何使用System.printf在十进制后仅输出两位数字?

热门标签

归档