-1

我有一个网页,我正试图从中获得约会。我知道格式是什么,所以解决方案应该像 一样简单time.strptime(format),但问题是:
If string cannot be parsed according to format, or if it has excess data after parsing, ValueError is raised.
我正在尝试解析看起来像这样的东西:

<tr><td align="center"><b>Create time</b></td>
</tr><tr><td align="center" bgcolor="#DDDDDD">Between August 1, 2012, 8:05 pm and August 1, 2012, 8:06 pm</td>  

相应的格式是%B %d, %Y(哪个日期并不重要,我只需要一个日期)。
我可以使用正则表达式(例如([JFMASOND][a-z]{2,8}) ([0-9]{1,2}), ([0-9]{4}))来获取字符串的相关部分,但是我也可以从正则表达式中获取值本身并自己进行必要的转换。可以这么说,有什么方法可以在容器字符串上使用 strptime 吗?strptime 不应该太难在字符串上继续处理直到它得到格式匹配......
(如果我必须自己做,有没有比正则表达式更好的方法?)

4

1 回答 1

3

我一直使用该parsedatetime模块从文本中提取日期。它工作得很好:

>>> import parsedatetime as pdt
>>> parser = pdt.Calendar(pdt.Constants())
>>> parser.parseDateText('Between August 1, 2012, 8:05 pm and August 1, 2012, 8:06 pm')
daysInMonth(8, 2012)
(2012, 8, 1, 17, 53, 18, 6, 218, 1)
>>> 

它接受几乎所有带有缩写的日期格式,除了Sept.我已经发布到错误跟踪器但他们拒绝修复它,所以我只是替换SeptSep并且它工作正常。

于 2012-08-05T21:56:02.040 回答