从字符串中识别和提取日期 - Python
Identify and Extract Date from String - Python
我想从许多不同的字符串中识别和提取日期。日期的格式可能不同。我一直在使用 datefinder 包,但在保存输出时遇到了一些问题。
目标:从字符串中提取日期,该字符串的格式可能有多种(即 April,22 或 4/22 或 22-Apr 等),如果没有日期,则将值设置为'None' 并在日期列表后附加日期或 'None'.
请看下面的例子。
示例 1:(这个 return 是一个日期,但没有添加到我的列表中)
import datefinder
extracted_dates = []
sample_text = 'As of February 27, 2019 there were 28 dogs at the kennel.'
matches = datefinder.find_dates(sample_text)
for match in matches:
if match == None:
date = 'None'
extracted_dates.append(date)
else:
date = str(match)
extracted_dates.append(date)
示例 2:(这不是 return 日期,也不会添加到我的列表中)
import datefinder
extracted_dates = []
sample_text = 'As of the date, there were 28 dogs at the kennel.'
matches = datefinder.find_dates(sample_text)
for match in matches:
if match == None:
date = 'None'
extracted_dates.append(date)
else:
date = str(match)
extracted_dates.append(date)
我试过使用你的包,但似乎没有快速和通用的方法来提取你的例子中的真实日期。
我改为使用 DateParser package and more specifically the search_dates 方法
我仅在您的示例中对其进行了简要测试。
from dateparser.search import search_dates
sample_text = 'As of February 27, 2019 there were 28 dogs at the kennel.'
extracted_dates = []
# Returns a list of tuples of (substring containing the date, datetime.datetime object)
dates = search_dates(sample_text)
if dates is not None:
for d in dates:
extracted_dates.append(str(d[1]))
else:
extracted_dates.append('None')
print(extracted_dates)
我想从许多不同的字符串中识别和提取日期。日期的格式可能不同。我一直在使用 datefinder 包,但在保存输出时遇到了一些问题。
目标:从字符串中提取日期,该字符串的格式可能有多种(即 April,22 或 4/22 或 22-Apr 等),如果没有日期,则将值设置为'None' 并在日期列表后附加日期或 'None'.
请看下面的例子。
示例 1:(这个 return 是一个日期,但没有添加到我的列表中)
import datefinder
extracted_dates = []
sample_text = 'As of February 27, 2019 there were 28 dogs at the kennel.'
matches = datefinder.find_dates(sample_text)
for match in matches:
if match == None:
date = 'None'
extracted_dates.append(date)
else:
date = str(match)
extracted_dates.append(date)
示例 2:(这不是 return 日期,也不会添加到我的列表中)
import datefinder
extracted_dates = []
sample_text = 'As of the date, there were 28 dogs at the kennel.'
matches = datefinder.find_dates(sample_text)
for match in matches:
if match == None:
date = 'None'
extracted_dates.append(date)
else:
date = str(match)
extracted_dates.append(date)
我试过使用你的包,但似乎没有快速和通用的方法来提取你的例子中的真实日期。
我改为使用 DateParser package and more specifically the search_dates 方法
我仅在您的示例中对其进行了简要测试。
from dateparser.search import search_dates
sample_text = 'As of February 27, 2019 there were 28 dogs at the kennel.'
extracted_dates = []
# Returns a list of tuples of (substring containing the date, datetime.datetime object)
dates = search_dates(sample_text)
if dates is not None:
for d in dates:
extracted_dates.append(str(d[1]))
else:
extracted_dates.append('None')
print(extracted_dates)