Python 时间提取并格式化处理

在进行文本预处理的过程中,有时候需要将文本中的日期数据提取出来并将其按照一定的格式标准化,进而进行比较大小之类的操作。

1、日期提取

在文本中日期呈现的方式各种各样,如:2018.12.2、2018.12.02、2018-12-2、2018-12-02、201/12/2、二零一八年十二月二日、2018年12月2日 等等,我们可以利用正则表达式将其提取出来。
假设存在如下文本数据,我们需要提取文中最后出现的日期数据:

在这里插入图片描述
利用正则表达式和apply函数将日期一次性提取出来:

import re
pattern = re.compile('\d{4}[\.\-/年]{1}\d{1,2}[\.\-/月]{1}\d{1,2}[日号]{0,1}|二.{3}年.{1,2}月.{1,3}[日号]{1}')
data['date'] = data['text'].apply(lambda s: pattern.findall(s))

结果如下图所示:
在这里插入图片描述
若要选取最后出现的日期,可更改一下代码:

data['date'] = data['text'].apply(lambda s: pattern.findall(s)[-1])

效果如下:
在这里插入图片描述

2、日期格式化

通过正则表达式提取的日期格式比较乱,无法对其进行进一步的计算或者比较,因此可将其格式化为××××-××-×× eg:2018-01-01这种字符串。

2.1、中文替换为数字,连接符替换为 -

注意: 大的中文数字必须放在小的之前,否则替换的时候会产生奇妙的化学反应。(哈哈哈哈)

replace_dic = {
   '元': '01', '二○一七': '2017', '二○一八': '2018', '二〇一七': '2017', '二〇一八': '2018', '年': '-', '月': '-',
               '日': '','\.': '-', '/': '-', '号': '','三十一': '31', '三十': '30', '二十九': '29', '二十八': '28', '二十七': '27', 
      
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值