在字符串中查找和格式化非正式日期的正确方法是什么?

我有一个小项目,我在 firebase 数据库中非正式地将日期写为字符串。我需要将这些日期转换为日期时间格式。这是假设日期有效。网站中的输入不能修改(这是解决这个问题的全部前提)。还假定月份按名称书写,月份采用 YYYY 格式。


我对这些条目的一些示例进行了分类:


几乎明确:


“2017年7月13日”、“2008年12月3日”、“2016年12月”、“2017年12月21日”、“2020年”、“2017年11月24日”、“2012年3月14日”、“2016年7月22日”、“2016年7月22日” 、“2011 年 1 月 17 日”、“2013 年 7 月获得”...


这些会相对容易。年份总是一个 4 位数字,日期是一个 2 位数字,月份是一个字符串。这些可以被检查/比较,如果他们错过了确切的日期(1 或 2 位数字),我可以假设它可以作为第一个(一个月中的一天),同样适用于没有指定的月份(假设为 1 月)。


其他简单的字符串:


“当组准备好时”、“未指定”、“取消”、“设置”。


这些不包含日期,因此它们不重要。只需检查没有数字即可完成工作。这些可以设置为 00-00-0000,没关系。


更难的:


“12 或 24 个月内”、“2013 年第四季度”、“2019 年深秋”


我刚在想:


如果我读“内”,我会计算当前日期,加上它后面的数字(天、月、年)。


如果我将 Q(四分之一)定义为地图


Q={1:(1,2,3), 2:(4,5,6), 3:(7,8,9), 4:(10,11,12)}


和话


when = {"Early" : 1, "Mid": 2, "Late": 3}

季节也是如此。


例如,我可以访问第四季度的 Q 的第 4 个元素并获取其月份,或作为季节 ["spring"] 的晚春并获取“早、中、晚”月份。


回到问题:


我不确定我是否应该使用正则表达式、映射和如此多的比较来解决这个问题,这会引入很多错误,或者使用某种 AI,但我对这个主题还不太精通。


那么,回到问题,您将如何处理此类问题?


有没有可能有帮助的图书馆?


我觉得这里没有一个非常简单的实现,或者我知道的方法效率低下并且需要大量硬编码。


慕工程0101907
浏览 141回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python