字符串:- “今天是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'不匹配
在我错的地方,有人可以帮我吗?
答案 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")