python-3.x - 如何从 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)
我从上面的正则表达式中得到。
解决方案
最初我想从字符串中提取月份和年份的期间(例如: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)
推荐阅读
- c++11 - 当可以使用 map 完成相同的事情时,为什么在 C++ 中实现了集合数据结构?
- asp.net-mvc - JSTree: Uncaught TypeError: $(...).jstree is not a function
- javascript - 通过 innerHTML 动态添加 CSS 文件的加载端事件
- javascript - 提交后谷歌脚本网络应用程序进入空白页面
- python - 如何正确进行xpath“和”/条件查询?
- javascript - 使用类型默认值将 GraphQL 查询转换为 JS 对象
- android - 错误:[kapt] java.lang.IllegalArgumentException:@androidx.room.ColumnInfo 未定义元素 defaultValue()
- angular - 将 Ionic 从 3 更新到 4 后无法访问 PouchDB 数据(带有适配器 WebSQL)
- git - bitbucket git push 错误:pack-objects 死于信号 127
- python - 如何模拟一个zip文件