使用日期查找器将字符串转换为日期



当我尝试使用datefinder在.txt文件中查找日期时,会出现问题。我觉得我不必要地在数据类型之间切换,以获得我想要的结果。

下面是一个MWE,它导致生成器对象,而当更改为列表时,生成器对象又是空的。我想获得格式为%d-%m-%Y的日期时间。MWE:

import datefinder 
f = ['this is text', 'this is a date', '* Model creation date:            Sun Apr 25 08:52:06 2021']
for line in f:
if "creation date" in line: 
date_line = str(line)
rev_date = datefinder.find_dates(_date_line)
dateutil的解析器似乎做得更好:
import dateutil
f = ['this is text', 'this is a date', '* Model creation date:            Sun Apr 25 08:52:06 2021']
dates = []
for line in f:
try:
dates.append(dateutil.parser.parse(line, fuzzy=True))
except dateutil.parser.ParserError:
pass

print(dates)    
# [datetime.datetime(2021, 4, 25, 8, 52, 6)]

对于特定用例:

for line in f:
if "* Model creation date:" in line:
rev_date = dateutil.parser.parse(line, fuzzy=True)
break
print(rev_date)    
# 2021-04-25 08:52:06

似乎datefinder.find_dates是基于:工作的。若能在creation date之后去掉:字符,就会得到正确的结果。如果你的字符串总是包含creation date:,你可以在if语句后删除这个子字符串:

import datefinder 
f = ['this is text', 'this is a date', '* Model creation date:            Sun Apr 25 08:52:06 2021']
for line in f:
if "creation date" in line: 
date_line = line.replace('creattion date:', '')
rev_date = datefinder.find_dates(date_line)

最新更新