mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-09-07 08:26:06 +00:00
Tiancheng: extract_date_parts_en
This commit is contained in:
parent
59af101c6f
commit
5705abcec7
1 changed files with 75 additions and 0 deletions
|
|
@ -65,6 +65,81 @@ class DatetimeHandler(object):
|
|||
extracted_data[key] = int(match.group(1))
|
||||
return extracted_data
|
||||
|
||||
@classmethod
|
||||
def extract_date_parts_en(cls, input_string: str) -> dict:
|
||||
date_info = {
|
||||
"year": -1,
|
||||
"month": -1,
|
||||
"day": -1,
|
||||
"hour": -1,
|
||||
"minute": -1,
|
||||
"second": -1,
|
||||
"weekday": -1
|
||||
}
|
||||
|
||||
# Patterns to extract the parts of the date/time
|
||||
patterns = {
|
||||
"year": r"\b(\d{4})\b",
|
||||
"month": r"\b(January|February|March|April|May|June|July|August|September|October|November|December)\b",
|
||||
"day": r"\b(\d{1,2})\b",
|
||||
"hour_12": r"\b(\d{1,2})\s*(AM|PM|am|pm)\b",
|
||||
"hour_24": r"\b(\d{1,2}):(\d{2}):(\d{2})\b"
|
||||
}
|
||||
|
||||
month_mapping = {
|
||||
"January": 1, "February": 2, "March": 3, "April": 4,
|
||||
"May": 5, "June": 6, "July": 7, "August": 8,
|
||||
"September": 9, "October": 10, "November": 11, "December": 12
|
||||
}
|
||||
|
||||
weekday_mapping = {
|
||||
"Monday": 1, "Tuesday": 2, "Wednesday": 3, "Thursday": 4,
|
||||
"Friday": 5, "Saturday": 6, "Sunday": 7
|
||||
}
|
||||
|
||||
# Extract year
|
||||
year_match = re.search(patterns["year"], input_string)
|
||||
if year_match:
|
||||
date_info["year"] = int(year_match.group(0))
|
||||
|
||||
# Extract month
|
||||
month_match = re.search(patterns["month"], input_string)
|
||||
if month_match:
|
||||
date_info["month"] = month_mapping[month_match.group(0)]
|
||||
|
||||
# Extract day
|
||||
day_match = re.findall(patterns["day"], input_string)
|
||||
if day_match:
|
||||
date_info["day"] = int(day_match[0])
|
||||
|
||||
# Extract 12-hour format time
|
||||
hour_12_match = re.search(patterns["hour_12"], input_string)
|
||||
if hour_12_match:
|
||||
hour, period = int(hour_12_match.group(1)), hour_12_match.group(2).lower()
|
||||
if period == 'pm' and hour != 12:
|
||||
hour += 12
|
||||
elif period == 'am' and hour == 12:
|
||||
hour = 0
|
||||
date_info["hour"] = hour
|
||||
|
||||
# Extract 24-hour format time
|
||||
hour_24_match = re.search(patterns["hour_24"], input_string)
|
||||
if hour_24_match:
|
||||
date_info["hour"] = int(hour_24_match.group(1))
|
||||
date_info["minute"] = int(hour_24_match.group(2))
|
||||
date_info["second"] = int(hour_24_match.group(3))
|
||||
|
||||
# Extract weekday
|
||||
for week_day, value in weekday_mapping.items():
|
||||
if week_day in input_string:
|
||||
date_info["weekday"] = value
|
||||
break
|
||||
|
||||
# Remove unused keys
|
||||
date_info = {k: v for k, v in date_info.items()}
|
||||
|
||||
return date_info
|
||||
|
||||
@classmethod
|
||||
def extract_date_parts(cls, input_string: str) -> dict:
|
||||
func_name = f"extract_date_parts_{G_CONTEXT.language}"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue