从日期/时间的字符串信息中提取

我有一些文本通常以以下内容开头:


“12 minutes ago - There was a meeting...”

“2 hours ago - Apologies for being...”

“1 day ago - It is a sunny day in London...”

等等。基本上我有以下信息:


Minutes 

Hours

Day (starting from today)

我想将此类信息转换为有价值的时间序列信息,以便提取这部分并从中创建一个新列(日期时间)。在我的数据集中,我有一列(日期),其中我已经有执行研究的日期(例如,今天),格式为:26/05/2020 和提交搜索的时间(例如上午 8:41 ). 因此,如果文本以“12 分钟前”开头,我应该:


26/05/2020 - 8:29 (datetime format in Python)

对于其他人:


26/05/2020 - 6:41

25/05/2020 - 8:41

重要的是要有一些东西(字符串、数字、日期格式),我可以将其绘制为时间序列(我想看看在时间间隔方面发布了多少文本)。关于如何做到这一点的任何想法?


茅侃侃
浏览 87回答 2
2回答

慕标琳琳

如果格式保持简单:<digits> <unit> ago ...用"^(\d+) (\w+) ago".然后,一旦你('minutes', '12')将这些传递给timedelta它接受每个单元作为关键字参数timedelta(minutes=12),你将通过传递一个映射来做到这一点**{unit:value}def parse(content):&nbsp; &nbsp; timeparts = re.search(r"^(\d+) (\w+) ago", content)&nbsp; &nbsp; if not timeparts:&nbsp; &nbsp; &nbsp; &nbsp; return None, content&nbsp; &nbsp; unit = timeparts.group(2).rstrip('s') + 's' # ensure ends with 's'&nbsp; &nbsp; #return datetime.now()-timedelta(**{unit:int(timeparts.group(1))})&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Now date&nbsp; &nbsp; return datetime(2020,5,26,8,0,0)-timedelta(**{unit:int(timeparts.group(1))}) # Fixed date演示values = ["12 minutes ago - There was a meeting...","2 hours ago - Apologies for being...","1 day ago - It is a sunny day in London..."]for value in values:&nbsp; res = parse(value)&nbsp; print(res)2020-05-26 07:48:002020-05-26 06:00:002020-05-25 08:00:00

明月笑刀无情

您应该为此使用自然语言处理库,例如spaCY或 NLTK这是tokenization来自上面链接的示例,显示了 spacY 如何分解句子:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python