数据提取器Python输出错误的y

2024-06-08 07:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图完成一个相当简单的任务-提取日期从一个电子邮件语料库(所有时间戳)。我尝试过几种不同的Python包,但似乎都不起作用。下面是

from date_extractor import extract_dates

y = "Message-ID: <18782981.1075855378110.JavaMail.evans@thyme> Date: Mon, 14 May 2001 16:39:00 -0700 (PDT)"
dates = extract_dates(y)  
for i in dates:
    print i

结果:

2010-08-01 00:00:00+00:00
2001-05-14 00:00:00+00:00
1939-01-06 00:00:00+00:00
2018-01-01 00:00:00+00:00
2007-01-01 00:00:00+00:00

正确的时间戳(2001-05-14)在那里,但是其他一些随机日期也在那里。你知道为什么会这样吗


Tags: fromimportidmessagedate电子邮件时间extract
2条回答

字符串中还有许多其他数字可以作为日期 请尝试下面,看看是否有帮助

from dateutil.parser import parse
y = "Message-ID: <18782981.1075855378110.JavaMail.evans@thyme> Date: Mon, 14 May 2001 16:39:00 -0700 (PDT)"
d = y.split('Date: ')[1]
ts = parse(d)
print(ts)

您使用的库假设所有数字都是日期。如果你的电子邮件格式相似,你可以通过只提供日期段来帮助图书馆,比如:

>>> import re
>>> y = "Message-ID: <18782981.1075855378110.JavaMail.evans@thyme> Date: Mon, 14 May 2001 16:39:00 -0700 (PDT)"
>>> re.search(r'Date: (\w+), ([^:]*) \d{2}:', y).group(2)
'14 May 2001'

然后可以将group(2)传递给extract_dates(y)函数。如果您正在使用dateutil,您可以:

>>> from dateutil import parser
>>> re.search(r'Date: (\w+), ([^:]*) \d{2}:', y).group(2)
'14 May 2001'
>>> parser.parse(_)
datetime.datetime(2001, 5, 14, 0, 0)
>>> 

我不知道有没有一个现有的python库可以处理您的情况而不需要进行一些预解析

相关问题 更多 >

    热门问题