通过使用datetime从字符串中提取预期日期

时间:2019-11-19 17:52:20

标签: python regex python-3.x datetime python-3.6

字符串:- “今天是2019年11月19日。”

输出:-2019年11月19日

我尝试过这个:-

datetime.strptime(re.search((January|February|March|April|May|June|July|August|September|Octomber|November|December) \d{1,2}(th|st|rd), \d{4}",String).group(), "%B %d, %Y")

但是它向我显示错误:-

  

ValueError:时间数据'2019年11月11日'与格式'%B%d(th | st | rd),%Y'不匹配

在我错的地方,有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

datetime格式不支持类似正则表达式的模式,因此您应首先构建固定格式的字符串以进行解析。

您可以使用re.sub来从字符串中仅提取月,日和年,然后将它们重新组装为以空格分隔的字符串,然后再传递到datetime.strptime进行解析:

datetime.strptime(re.sub(r'.*\b(January|February|March|April|May|June|July|August|September|Octomber|November|December) (\d{1,2})(?:th|st|rd), (\d{4})\b.*', r'\1 \2 \3', String), "%B %d %Y")