从文本Python识别和提取日期的最佳方法?

问题描述

我也在寻找解决方案,但找不到任何解决方案,所以我和一个朋友建立了一个工具来完成此任务。我以为我会回来分享一下,以防其他人觉得有用。

日期查找器-查找并提取文本中的日期

这是一个例子:

import datefinder

string_with_dates = '''
    Central design committee session Tuesday 10/22 6:30 pm
    Th 9/19 LAB: Serial encoding (Section 2.2)
    There will be another one on December 15th for those who are unable to make it today.
    Workbook 3 (Minimum Wage): due Wednesday 9/18 11:59pm
    He will be flying in Sept. 15th.
    We expect to deliver this between late 2021 and early 2022.
'''

matches = datefinder.find_dates(string_with_dates)
for match in matches:
    print(match)

解决方法

作为我正在从事的大型个人项目的一部分,我试图从各种文本源中分离出内联日期。

例如,我有大量的字符串(通常采用英语句子或语句的形式),采用多种形式:

中央设计委员会会议,星期二10/22 6:30 pm

9/19 LAB:串行编码(第2.2节)

12月15日将举办另一场针对那些今天无法做到的人。

练习册3(最低工资):到期日:星期三9/18 11:59 pm

他将于9月15日出发。

尽管这些日期与自然文本一致,但它们本身都不是特定的自然语言形式(例如,没有“会议将从明天开始两周”,这都是明确的)。

作为对这种处理没有太多经验的人,什么是最好的起点?我已经研究了dateutil.parser模块和parsedatetime之类的东西,但是这些似乎是
您确定日期之后的。

因此,有什么好的方法可以提取日期和多余的文本

input:  Th 9/19 LAB: Serial encoding (Section 2.2)
output: ['Th 9/19','LAB: Serial encoding (Section 2.2)']

或类似的东西?这种处理似乎是由Gmail和Apple Mail之类的应用程序完成的,但是可以用Python实现吗?