gpt4 book ai didi

python - 如何使用 dateparser 解析 1000 年之前的日期?

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:25 26 4
gpt4 key购买 nike

我正在尝试使用 dateparser 解析早于 1000 年且少于四位数字的日期。

import dateparser

value = "july 900"
result = dateparser.parse(value)
result is None # True

起初我认为与这里提到的问题有关:Use datetime.strftime() on years before 1900? ("require year >= 1900") ,因为某些时候使用某些输入(例如 900),结果是当前日期和月份与年份 1900 的组合。但在对随机日期和相对表达式进行更多试验后,我注意到 dateparser 可以输出早于 1000 的日期,然后我发现,如果我对年份进行零填充,则结果将是正确的。

import dateparser

value = "july 0900"
result = dateparser.parse(value)
result is None # False
result # datetime.datetime(900, 7, 4, 0, 0)

我在寻找解决方案时发现了这一点: https://github.com/scrapinghub/dateparser/issues/410但最后的评论给我留下的问题多于答案,因为我未能找到一种方法将自定义解析器传递给 dateparserdateutil.parser 的内部用户。

我当前的解决方案是查找正则表达式 3 位数年份模式,使用类似于以下内容的内容: (.* +| *|.+[\/\-.]{1,})([1- 9][0-9]{2,})( *| +.*|[\/\-.]{1,}.+) 并将它们填充到位。

有更好的方法吗?

编辑:

是否还有一个优雅的解决方案来解析我们时代之前的日期(例如公元前)? (似乎 dateparser 设置键 SUPPORT_BEFORE_COMMON_ERA 在这方面没有做太多事情,所有其他似乎都不相关)

这样它就可以用于考古约会网站。

最佳答案

不要对日期使用正则表达式。这很困难,极端情况会让你发疯。模块 dateutil 正确执行您想要的操作。

>>> from dateutil import parser
>>> value = "july 900"
>>> parser.parse(value)
datetime.datetime(900, 7, 4, 0, 0)

这不是当前时代之前日期的解决方案。这是因为 dateutildateparser 都适用于 datetimedatetime 不接受小于 1 的年份.

关于python - 如何使用 dateparser 解析 1000 年之前的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55519218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com