月/年格式的dateutil解析器:返回月初

age*_*nis 2 python regex datetime parsing

当我解析日期时,我使用parser.parse自动识别原始文本中的各种语法的方法.当我有一些像"10/2018"这样的字符串没有日期编号信息时,我的问题就出现了.默认情况下,解析器在该月的最后一天(此处为第30个)返回datetime对象; 我想改变这种行为,以便它返回月份的第一天(例如:)datetime(2018, 10, 1, 0, 0).我怎样才能做到这一点?

from dateutil import parser
mystring = ["10/2018", "05/10/2018", "Oct, 2018"]
[parser.parse(i) for i in mystring]
#### Out[5] [datetime.datetime(2018, 10, 30, 0, 0), datetime.datetime(2018, 5, 10, 0, 0), datetime.datetime(2018, 10, 30, 0, 0)]
Run Code Online (Sandbox Code Playgroud)

谢谢,

Dan*_* M. 6

快速查看文档(https://dateutil.readthedocs.io/en/stable/parser.html)显示parse()默认为月末,除非提供了默认的datetime对象:

from datetime import datetime
from dateutil import parser

mystring = ["10/2018", "05/10/2018", "Oct, 2018"]
[parser.parse(i, default=datetime(1978, 1, 1, 0, 0)) for i in mystring]

# [datetime.datetime(2018, 10, 1, 0, 0), datetime.datetime(2018, 5, 10, 0, 0), datetime.datetime(2018, 10, 1, 0, 0)]
Run Code Online (Sandbox Code Playgroud)