dateutil解析器,用于月/年格式:返回月初

时间:2018-12-30 19:56:24

标签: 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)]

谢谢

1 个答案:

答案 0 :(得分:5)

快速浏览文档(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)]