我有一个字符串,里面有几个日期值,我想把它们都解析出来。字符串是自然语言,所以到目前为止我找到的最好的东西是dateutil。
不幸的是,如果一个字符串中有多个日期值,则dateutil会抛出一个错误:
>>> s = "I like peas on 2011-04-23, and I also like them on easter and my birthday, the 29th of July, 1928"
>>> parse(s, fuzzy=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.7/dateutil/parser.py", line 697, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/usr/lib/pymodules/python2.7/dateutil/parser.py", line 303, in parse
raise ValueError, "unknown string format"
ValueError: unknown string format
对如何解析一个长字符串中的所有日期有什么想法吗?理想情况下,会创建一个列表,但如果需要,我可以自己处理。
我正在使用Python,但在这一点上,如果其他语言完成了这项工作,它们可能也是可以的。
PS -我想我可以递归地将输入文件分割到中间,然后尝试,再尝试,直到它工作,但这是一个地狱般的黑客。
发布于 2011-08-12 00:58:15
我认为如果你把“单词”放在一个数组中,它应该可以做到这一点。这样,您就可以验证它是否是日期,并放入一个变量。
一旦你有了日期,你就应该使用datetime library库。
发布于 2011-08-12 03:13:36
为什么不编写一个涵盖日期可能出现的所有可能形式的正则表达式模式,然后启动正则表达式来探索文本?我假设在字符串中表达日期的方式不是一打一打的。
唯一的问题是收集日期表达式的最大值
https://stackoverflow.com/questions/7028689
复制相似问题