当字符串在日期之前有 ':' 时,datefinder 不会找到日期
datefinder wont find dates when the string has ':' before date
当日期前有“:”时,datefinder 模块找不到日期。
这里有一个类似的问题:
Datefinder Module Stranger behavior on particular string
string = "Assessment Date 17-May-2017 at 13:31"
list(datefinder.find_dates(string.lower()))
#Returns [datetime.datetime(2017, 5, 17, 13, 31)]
但是当我添加:像这样"Assessment Date:"时,它失败了
string = "Assessment Date 17-May-2017 at 13:31"
list(datefinder.find_dates(string.lower()))
#returns []
这些是 datefinder
中的分隔符模式:DELIMITERS_PATTERN = r"[/:-\,\s_+@]+"
因此,当您尝试解析字符串时,'Date:' 导致出现问题。
您可以使用正则表达式预清理字符串。
import re as regex
import datefinder
def preclean_input_text(text):
cleaned_text = regex.sub(r'[a-z]:\s', ' ', text, flags=re.IGNORECASE)
return cleaned_text
def parse_date_information(text):
date_info = list(datefinder.find_dates(text.lower()))
return date_info
string = "Assessment Date: 17-May-2017 at 13:31"
cleaned_string = preclean_input_text(string)
print(parse_date_information(cleaned_string))
# output
[datetime.datetime(2017, 5, 17, 13, 31)]
当日期前有“:”时,datefinder 模块找不到日期。
这里有一个类似的问题: Datefinder Module Stranger behavior on particular string
string = "Assessment Date 17-May-2017 at 13:31"
list(datefinder.find_dates(string.lower()))
#Returns [datetime.datetime(2017, 5, 17, 13, 31)]
但是当我添加:像这样"Assessment Date:"时,它失败了
string = "Assessment Date 17-May-2017 at 13:31"
list(datefinder.find_dates(string.lower()))
#returns []
这些是 datefinder
中的分隔符模式:DELIMITERS_PATTERN = r"[/:-\,\s_+@]+"
因此,当您尝试解析字符串时,'Date:' 导致出现问题。
您可以使用正则表达式预清理字符串。
import re as regex
import datefinder
def preclean_input_text(text):
cleaned_text = regex.sub(r'[a-z]:\s', ' ', text, flags=re.IGNORECASE)
return cleaned_text
def parse_date_information(text):
date_info = list(datefinder.find_dates(text.lower()))
return date_info
string = "Assessment Date: 17-May-2017 at 13:31"
cleaned_string = preclean_input_text(string)
print(parse_date_information(cleaned_string))
# output
[datetime.datetime(2017, 5, 17, 13, 31)]