dateutil的解析器似乎做得更好:
当我尝试使用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)
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)