diff options
Diffstat (limited to 'string_utils.py')
| -rw-r--r-- | string_utils.py | 23 |
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: |
