| import re | |
| def extract_timeline(text): | |
| timeline = [] | |
| lines = text.split("\n") | |
| date_pattern = ( | |
| r"\b\d{1,2}\s" | |
| r"(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|" | |
| r"January|February|March|April|May|June|July|August|" | |
| r"September|October|November|December)" | |
| r"\s\d{4}\b" | |
| ) | |
| for i, line in enumerate(lines): | |
| matches = re.findall( | |
| date_pattern, | |
| line, | |
| re.IGNORECASE | |
| ) | |
| if matches: | |
| event = re.sub( | |
| date_pattern, | |
| "", | |
| line, | |
| flags=re.IGNORECASE | |
| ).strip(" :-") | |
| timeline.append([ | |
| matches[0], | |
| event | |
| ]) | |
| return timeline |