基于python和正则匹配实现日期标准化方法

        对文本进行处理的时候,大家有没有遇到过这样的烦恼——对于文本表示日期的实体,当我们希望把它提取出来时,由于日期格式五花八门,实际处理过程中总会发现各种各样的bug(血泪教训),洛基在网上也没有找到一个特别好的日期格式化的程序,所以打算自己写一个,对于遇到的问题也会不断更新,特记录在此博客中,后续会更新到github上。(update:代码上传到github了,地址戳这里~)

        简单介绍一下这个程序:输入是一个字符串,该字符串包含一个日期表示以及其他的噪声字符,程序会进行正则匹配并识别出日期,返回标准时间戳格式的日期字符串。使用方法也很简单:

from date_uniform.utils import date_format
output = date_format(string_text)

实际使用效果如下:

* input:15. MARCH. 2021,	 	output:2021-03-15 00:00:00
* input:2-DEC-21,	 	output:2021-12-02 00:00:00
* input:2-十二月-21,	 	output:2021-12-02 00:00:00
* input:2-十二月-20,	 	output:2020-12-02 00:00:00
* input:2-十二月-22,	 	output:2022-12-02 00:00:00
* input:28 - Jul - 21,	 	output:2021-07-28 00:00:00
* input:June.8,2021,	 	output:2021-06-08 00:00:00
* input:12月 4日,	 	output:2022-12-04 00:00:00
* input:2021 - 07 - 05,	 	output:2021-07-05 00:00:00
* input:2021.07.29,	 	output:2021-07-29 00:00:00
* input:2021年8月30日,	 	output:2021-08-30 00:00:00
* input:2021 年06 月06 日,	 	output:2021-06-06 00:00:00
* input:2021 / 09 / 11,	 	output:2021-09-11 00:00:00
* input:2021 / 6 / 11日,	 	output:2021-06-11 00:00:00
* input:21 / 9 / 2,	 	output:2022-09-02 00:00:00
* input:Jun, 15, 2021,	 	output:2021-06-15 00:00:00
* input:AUG - 08, 2021,	 	output:2021-08-08 00:00:00
* input:JUL 16, 2020,	 	output:2020-07-16 00:00:00
* input:4 / 21 / 2021,	 	output:2022-04-21 00:00:00
* input:6 / 22 / 2021,	 	output:2022-06-22 00:00:00
* input:15 / OCT. / 2021,	 	output:2022-10-15 00:00:00
* input:04 / Apr / 2021,	 	output:2021-04-04 00:00:00
* input:28 - Jul - 21,	 	output:2021-07-28 00:00:00
* input:28 - Sep - 2021,	 	output:2021-09-28 00:00:00
* input:30th Aug.2021,	 	output:2021-08-30 00:00:00
* input:14 Jul, 2021,	 	output:2021-07-14 00:00:00
* input:22, MAY, 2021,	 	output:2021-05-22 00:00:00
* input:5.18,	 	output:2022-05-18 00:00:00
* input:12.14,	 	output:2022-12-14 00:00:00
* input:9月14日,	 	output:2022-09-14 00:00:00
* input:6 月11号,	 	output:2022-06-11 00:00:00
* input:4 月2 号,	 	output:2022-04-02 00:00:00
* input:8 - 8日,	 	output:2022-08-08 00:00:00
* input:AUG 17,	 	output:2022-08-17 00:00:00
* input:Oct25,	 	output:2022-10-25 00:00:00
* input:7 - 5号,	 	output:2022-07-05 00:00:00
* input:01 - 08,	 	output:2022-01-08 00:00:00
* input:4 / 30,	 	output:2022-04-30 00:00:00
* input:28 - Jul,	 	output:2022-07-28 00:00:00
* input:12 - JUL,	 	output:2022-07-12 00:00:00
* input:7 - 九月,	 	output:2022-09-07 00:00:00
* input:14th - July,	 	output:2022-07-14 00:00:00
* input:06TH  JULY,	 	output:2022-07-06 00:00:00
* input:32th july,	 	output:None
* input:31th july,	 	output:2022-07-31 00:00:00

 不足之处,将移至future work:

  • 未做日期检查,比如现有程序中,2月31日会被视为合法日期
  • 只做了初步的数据预处理,对于一些纯中文表示的日期可能会识别错误
  • 只识别年月日,未识别时分秒
  • 一次只处理一个日期,如果字符串中包含多个日期,只会识别第一个匹配到的日期

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值