首页 > 解决方案 > 如何从 Python 中的文本解析“5 月 17 日至 7 月 18 日”时间段?

问题描述

我想从给定的字符串中解析月份和年份。

我有如下字符串列表:

a = ['WORK EXPERIENCE: ',
 'Cause + Effect Strategy & Marketing (CESM) | Rochester, New York ',
 '',
 '              May 17-Aug 17 ',
 '',
 '                  Jun 14-Jun 15 ',]

现在我想首先从列表中解析日期,如“May 17-Aug 17”和“Jun 14-Jun 15”。

我尝试在列表的每个元素上使用 for 循环并使用日期查找器和解析器,所以我可以获得日期字符串,但我得到了空列表。

我尝试使用正则表达式来查找日期,如下所示:

re.findall(r'((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*(?:-|\.|\s|,)\s?\d{,2}[a-z]*(?:-|,|\s)?\s?\d{2,4})',string)

我从上面的正则表达式中得到。

标签: python-3.xdatetime

解决方案


最初我想从字符串中提取月份和年份的期间(例如:5 月 17 日至 8 月 17 日)。我尝试使用 Datefinder 和 Parser 库,但无法提取它。但后来我尝试使用正则表达式,它给了我需要的答案:((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*(?:-|\.|\s|,)\s?\d{,2}[a-z]*(?:-|,|\s)?\s?\d{2,4})'将在给定的正则表达式中找到月份,然后找到年份。

a = ['WORK EXPERIENCE: ',
     'Cause + Effect Strategy & Marketing (CESM) | Rochester, New York ',
     '',
     '              May 17-Aug 17 ',
     '',
     '                  Jun 14-Jun 15 ',]

date = []
for text in a:

match = re.findall(r'((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*(?:-|\.|\s|,)\s?\d{,2}[a-z]*(?:-|,|\s)?\s?\d{2,4})',text)
if match:
    date.append(match)
else:
    pass

print(date)

推荐阅读