使用python和正则表达式从文本中提取日期,其中日期的格式为2010年10月12日

时间:2016-10-26 08:53:39

标签: python regex

我想从以下文字中提取日期:

  

一些文字更多文字2010年10月12日

结果将是:

  

yyyy-mm-dd:2010-10-12

我怎样才能告诉正则表达月份是单词,可以是" 1月"," 2月"等一个空格,[一组1-2个字符]一个空格和最后一个[四个数字组\ d {4}]

2 个答案:

答案 0 :(得分:0)

在正则表达式中写出月份的实际名称是一个非常易读和可维护的表达式,我认为这对于正则表达式很重要。像这样:

(january|february|march|april|may|june|july|august|september|october|november|december)\s\d{1-2}\s\d{4}

答案 1 :(得分:0)

使用上述正则表达式和日历库查找日历名称,您可以按照以下步骤操作。

import calendar
import re
month_num = {v: str(k) for k,v in enumerate(calendar.month_name)}
apattern = r'(january|february|march|april|may|june|july|august|september|october|november|december)\s\d{1,2}\s\-\s\d{4}'
re.sub(apattern, lambda x: 'yyyy-mm-dd:' + x.group().split(" ")[-1]+"-"+x.group().split(" ")[-3] + "-" + month_num[x.group().capitalize().split(" ")[0]], 'october 12 - 2010')