我使用datefinder,从一段文字中提取可能的日期/时间字符串,然后将这些字符串放到dateutil.parser.parse()
以产生datetime
s。
在一个关键用例中,我有多个结果datetime
,可能与相同日期相对应。我想发布流程(这里不是主题)来提高解析日期的准确性。
要做到这一点,我需要表明对解析值的信心。
在一个完美的世界里,我能做到:
dt, confidence = dateutil.parser.parse_with_confidence('12/12/2017')
print(confidence)
>> {'year': 1, 'month': 0.5, 'day': 0.5, 'hours': 0, 'minutes': 0, 'seconds': 0, 'tz': 0}
dt, confidence = dateutil.parser.parse_with_confidence('12/Dec/2017')
print(confidence)
>> {'year': 1, 'month': 1, 'day': 1, 'hours': 0, 'minutes': 0, 'seconds': 0, 'tz': 0}
这将允许我选择第二个,对其月和日值更有信心。
部分解决方法:
我可以拨打dateutil
两次,完全不同的default
日期......
dt_a = dateutil.parser.parse('Dec2017', default=datetime(2017, 1, 1, 0, 0, 0))
>> 2017-12-01 00:00:00
dt_b = dateutil.parser.parse('Dec2017', default=datetime(2018, 2, 2, 1, 1, 1))
>> 2017-12-02 01:01:01
...然后评估解析器分配的值和默认值。
这是实现我需要的一些方法,因为它允许我在(比如)字符串'dec2017'
和'11dec2017'
生成的日期之间进行选择(其中一个包含的信息多于另一个)。
但是,它粗略解析了两次,而且它在上述情况下有误导性,后者有更多的信息,但含有歧义。
那里有一个模块吗?还是我面临修改dateutils
?