图书馆从文本中发现日期?

时间:2013-08-14 20:50:07

标签: c++ parsing date nlp string-parsing

我需要从字符串中提取日期。由于并非所有人在打印日期时都使用official ISO format,因此为每种可能使用的日期格式编写日期解析器是不切实际的,我需要处理尽可能多的日期格式 - 我无法控制数据并不能指望它以特定的格式出现。

这似乎是一个很久以前就已经解决过的问题了,但我的Google-fu太弱了,无法找到解决方案。 :(

是否已经存在一个C ++库,给定一个字符串,它将返回该字符串中引用的月,日,年,小时,分钟,秒等,如果有的话?

伪代码:

string s1 = "There is an expected meteor shower this Thursday,"
            "August 15th 2013 at 4:39 AM.";
string s2 = "20130815T04:39:00";
date d1 = magicConverter(s1);
date d2 = magicConverter(s2);
assert(d1 == d2);

1 个答案:

答案 0 :(得分:-1)

您可以使用here中的代码,但需要配置一个掩码,告诉代码使用的时间格式。如果你编写一个类例程,它需要一个掩码和一个字符串,让你抽出时间,并能够以你喜欢的任何格式打印,你应该做好充分的准备。如果它还支持Daynames和Monthnames,您必须查看更多细节。我让它在python中工作,模块提供的功能看起来几乎相同。

更多细节:

请再次查看2013-08-03的示例。除了戴着面具告诉JJJJ-MM-DD或JJJJ-DD-MM之外,没有任何人可以告诉你这个日期是否属于8月或4月。此库也可能只告诉您标准的屏蔽时间。因此,在这种情况下,它可能会导致你到八月。但正如你所说,它可以是任何日期声明,因此它不需要遵循标准,因此它也可以指三月。另一种可能性是从上下文中告诉您日期(例如,通过查找增加来表示具有所有相同时间格式的列的表(如果您仅查看一年中的一天,这也会失败)

另一个例子......如果我问你2013-05-04 ......它属于哪个月?你可能会告诉我......四月。 5月和5月5日我会回答“不,到5月4日”,反之亦然。如果你告诉我如何用两种可能的解决方案来解决这个难题,我会理解你的downvote ...请在向某人试图帮助你之前先想想。