Python Dateutil 解析:最小组件数
Python Dateutil Parsing: Minimum number of components
python dateutils
包允许在不指定格式的情况下解析日期(时间)。它总是尝试 return 一个日期,即使输入看起来不是一个日期(例如 12
)。 python确保输入中至少包含日、月和年的组成部分的方法是什么?
from dateutil import parser
dstr = '12'
dtime = parser.parse(dstr)
Returns
2019-06-12 00:00:00
一种方法是在可能的日期分隔符(例如,.
、-
、:
上拆分输入字符串。所以,这样你就可以输入 2016.5.19
或 2016-5-19
.
from dateutil import parser
import re
def date_parser(thestring):
pieces = re.split('\.|-|:', thestring)
if len(pieces) < 3:
raise Exception('Must have at least year, month and date passed')
return parser.parse(thestring)
print('---')
thedate = date_parser('2019-6-12')
print(thedate)
print('---')
thedate = date_parser('12')
print(thedate)
这将输出:
---
2019-06-12 00:00:00
---
Traceback (most recent call last):
File "bob.py", line 18, in <module>
thedate = date_parser('12')
File "bob.py", line 9, in date_parser
raise Exception('Must have at least year, month and date passed')
Exception: Must have at least year, month and date passed
所以第一个通过日期有 3 "pieces"。第二个没有。
根据 re.split
中的内容,这会变得不可靠,必须确保其中包含所有正确的分隔符。
如果您只需要 典型 日期分隔符,您可以删除分隔符中的 :
。
python dateutils
包允许在不指定格式的情况下解析日期(时间)。它总是尝试 return 一个日期,即使输入看起来不是一个日期(例如 12
)。 python确保输入中至少包含日、月和年的组成部分的方法是什么?
from dateutil import parser
dstr = '12'
dtime = parser.parse(dstr)
Returns
2019-06-12 00:00:00
一种方法是在可能的日期分隔符(例如,.
、-
、:
上拆分输入字符串。所以,这样你就可以输入 2016.5.19
或 2016-5-19
.
from dateutil import parser
import re
def date_parser(thestring):
pieces = re.split('\.|-|:', thestring)
if len(pieces) < 3:
raise Exception('Must have at least year, month and date passed')
return parser.parse(thestring)
print('---')
thedate = date_parser('2019-6-12')
print(thedate)
print('---')
thedate = date_parser('12')
print(thedate)
这将输出:
---
2019-06-12 00:00:00
---
Traceback (most recent call last):
File "bob.py", line 18, in <module>
thedate = date_parser('12')
File "bob.py", line 9, in date_parser
raise Exception('Must have at least year, month and date passed')
Exception: Must have at least year, month and date passed
所以第一个通过日期有 3 "pieces"。第二个没有。
根据 re.split
中的内容,这会变得不可靠,必须确保其中包含所有正确的分隔符。
如果您只需要 典型 日期分隔符,您可以删除分隔符中的 :
。