python-3.6 - 当逗号后有/没有空格时,为什么 dateutil.parser('May 10, 2019') 返回不一致的年份值?
问题描述
>>> from dateutil import parser
>>> parser.parse('May 10,2019')
datetime.datetime(2020, 5, 10, 0, 0)
>>> parser.parse('May 10, 2019')
datetime.datetime(2019, 5, 10, 0, 0)
注意逗号后面的空格或没有空格。
当逗号后面没有空格时,它似乎正在解析两位数的年份,而当逗号后面有空格时,它似乎正在解析一个四位数的年份。
这是预期的吗?
我拥有的版本:
$ pip show python-dateutil 名称:python-dateutil 版本:2.8.0
$ python3 Python 3.6.9(默认,2020 年 4 月 18 日,01:56:04)
解决方案
这可能不会有太大帮助,但至少应该提供一些额外的信息。
它不是在一种情况下解析两位数的年份,在另一种情况下解析四位数的年份,实际上在没有空格的情况下默认为当前年份,由于某种原因它无法解析年份。
>>> from dateutil import parser
>>> parser.parse("August 06, 1881")
datetime.datetime(1881, 8, 6, 0, 0)
>>> parser.parse("August 06,1881")
datetime.datetime(2020, 8, 6, 0, 0)
此后,此问题已在 Github https://github.com/dateutil/dateutil/issues/939上打开,并且似乎与逗号可以在时间内用作分隔符的事实有关(例如 23,5 秒)。它显然也曾经工作过:https ://github.com/dateutil/dateutil/issues/1075 所以有修复的希望,但这将涉及深入研究代码。
同时,应用到字符串的创可贴修复.replace(",", ", ")
可能会起作用,但它肯定不是最容易阅读的东西。
这也可能有用,但 Github 问题可能是最好的: https ://dateutil.readthedocs.io/en/stable/parser.html#dateutil.parser.parserinfo.JUMP
推荐阅读
- linux - Sudoer 没有为 python3 使用相同的环境
- javascript - Webpack:库的预构建生命周期钩子
- python - 如何在 Python PyPi 正则表达式模式中引用命名捕获组
- c++ - 作为方法参数的静态方法(作为 lambda)
- node.js - 当用户连接 nodejs mongodb Stripe 时解锁具有永久访问权限的视频教程
- java - KafkaJaasLoginModuleInitializer 缓存登录配置导致问题
- php - Jquery / Ajax 表单提交不会转发 POST 数据
- list - 单击列表视图后如何获取索引
- c# - 在 C# 和 SQL Server 中添加数据
- c++ - 我应该如何在当前架构中将 json 文件提供给网站