0

当我尝试使用 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)
4

2 回答 2

2

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
于 2021-06-16T14:42:40.687 回答
2

似乎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)
于 2021-06-16T14:44:09.190 回答