如何在Python中用regex从字符串中提取最小和最大日期?

2024-06-07 17:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从pandas中的字符串列中提取最小和最大日期。我有两种字符串格式来提取日期。你知道吗

第一个是:


date_from_string = 'My date format is 7-20 November 2019'

第二个是:


date_from_string_v2 = 'My date format is 7 October and 7 November 2019'

我想分别提取最小和最大日期。例如,对于第一种情况:

minimum_date = 20191107
maximum_date = 20191120

或者对于第二种类型:

minimum_date = 20191007
maximum_date = 20191107

我试过一个date_converter函数代码here。我还尝试了dateutilsdatefinder模块。但我还不能解决这个问题。在这个问题上我需要一些帮助。你知道吗

谢谢。你知道吗


Tags: and字符串fromformatpandasdatestringis
1条回答
网友
1楼 · 发布于 2024-06-07 17:18:57

根据您的注释,如果一个字符串只包含一个大小写和一个日期范围,正则表达式可能比日期解析器更好。日期解析器通常只生成一个日期,而不是一个范围(也许Arkistarvh提到的模块之一可以生成范围,但我对此表示怀疑)。你知道吗

针对您提供的字符串的正则表达式如下所示:

re_month=r'(?:January|February|March|April|May|June|July|August|September|October|November|December)'

re_ranges=r'(?P<range1s>\d{1,2})-(?P<range1e>\d{1,2} +'+re_month+' +\d{4})|(?P<range2s>\d{1,2} +'+re_month+') +and +(?P<range2e>\d{1,2} +'+re_month+' +\d{4})'

#which gives:

>re.search(re_ranges,date_from_string).groups()
('7', '20 November 2019', None, None)
>re.search(re_ranges,date_from_string_v2).groups()
(None, None, '7 October', '7 November 2019')

然后可以由普通的日期分析器解析。你知道吗

相关问题 更多 >

    热门问题