summaryrefslogtreecommitdiff
path: root/string_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'string_utils.py')
-rw-r--r--string_utils.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/string_utils.py b/string_utils.py
index 4127079..7c40dc9 100644
--- a/string_utils.py
+++ b/string_utils.py
@@ -1388,6 +1388,29 @@ def to_date(in_str: str) -> Optional[datetime.date]:
return None
+def extract_date(in_str: Any) -> Optional[str]:
+ import itertools
+
+ import dateparse.dateparse_utils as du
+
+ d = du.DateParser() # type: ignore
+ chunks = in_str.split()
+ for ngram in itertools.chain(
+ list_utils.ngrams(chunks, 5),
+ list_utils.ngrams(chunks, 4),
+ list_utils.ngrams(chunks, 3),
+ list_utils.ngrams(chunks, 2),
+ ):
+ try:
+ expr = " ".join(ngram)
+ logger.debug(f"Trying {expr}")
+ if d.parse(expr):
+ return d.get_date()
+ except du.ParseException: # type: ignore
+ pass
+ return None
+
+
def is_valid_date(in_str: str) -> bool:
"""
Args: