Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和正则表达式从文本中提取日期,日期格式为2010年10月12日_Python_Regex - Fatal编程技术网

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

使用python和正则表达式从文本中提取日期,日期格式为2010年10月12日,python,regex,Python,Regex,我想从以下文本中摘录日期: 一些文字更多文字2010年10月12日 结果将是: yyyy-mm-dd:2010-10-12 我如何告诉正则表达式月份是单词,可以是“一月”、“二月”等等,然后是一个空格,[一组1-2个字符]一个空格和最后一个[四位数字组]在正则表达式中写出月份的实际名称,这会产生一个非常可读和可维护的表达式,我觉得对于正则表达式来说很重要。像这样: (january|february|march|april|may|june|july|august|september|octob

我想从以下文本中摘录日期:

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

结果将是:

yyyy-mm-dd:2010-10-12


我如何告诉正则表达式月份是单词,可以是“一月”、“二月”等等,然后是一个空格,[一组1-2个字符]一个空格和最后一个[四位数字组]

在正则表达式中写出月份的实际名称,这会产生一个非常可读和可维护的表达式,我觉得对于正则表达式来说很重要。像这样:

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

使用上面的正则表达式和日历库查找日历名称,您可以按如下操作

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')