正则表达式提取新闻发生时间

最近在提取新闻事件的发生时间,现在只是实现了一个最简单的新闻,获取新闻报到时间和正文的时间。

方案:把正文中出现的第一个时间作为事情的发生时间,并按照统一的格式进行输出xxxx-xx-xx 某年某月某日这种格式。
在新闻中,由于每一个网站发布方不同,会存在报到时间不一致,以及正文内容格式不一致,在这个时候,我们需要考虑各种情况,但在此处,我们考虑的较简单,后面会在继续优化这个格式的提取。

p = re.compile(r'\d{4}年\d{1,2}月\d{1,2}日|今天|\d{1,2}月\d{1,2}日|\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}')

本人定义了上述正则表达式,使用上面的正则表达式,可以把这个新闻当中常见的日期格式给提取出来以及常见的月日表达给提取出来,由于本人,爬虫抓取的新闻内容是按照标题,报道,来源,正文内容,一般情况下,获取的第一个时间位报道时间,随后跟的时间是正文内容时间,会返回一个字符串形式的链表。

中间有对格式的转化,还有一些10月份以下操作补0,得到统一的位数输出,但是还没有对天数处理,完善之后会拿出来和大家分享

import re
f = '''重庆金山沟煤矿瓦斯爆炸事故搜救结束 33人全部遇难 湖北省人民政府应急管理办公室 2016年11月03日 来源:中国新闻网记者今天截至11月2日从重庆永川金山沟煤矿“10.31”瓦斯爆炸事故应急处置指挥部获悉,最后15名失联矿工遗体已全部找到,搜救工作结束。  10月31日11时33分,重庆永川区来苏镇金山沟煤矿发生瓦斯爆炸,事发时35人在井下作业,2人自救撤离,没有受伤,其余33人被困井下。  救援指挥部称,2日凌晨2时03分,经过救援队持续紧张搜救,除已找到并升井的18具遇难矿工遗体外,其他15名被困矿工已找到,均已无生命体征。救援队继续对矿井进行全面彻底搜寻,4时04分,搜救工作结束,全部遇难矿工遗体升井。  目前,各方正在抓紧做好遗体辨认及善后工作。(刘相琳)2015-08-23'''
#f = open(r'E:\news.txt','r',encoding = 'utf-8')
for readline in f:
    print(readline)
    p = re.compile(r'\d{4}年\d{1,2}月\d{1,2}日|今天|\d{1,2}月\d{1,2}日|\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}')
    p1 = re.compile(r'\d{1,2}月\d{1,2}日')
    result  = re.findall(p,readline)
    print(result)
    try:
            title_time = result[0].replace('年','-').replace('月','-').replace('日','').replace('号','')
            print(title_time)
            '''
            if result[1] == '今天':
                return result[0]
            '''

            '''
            ti = re.compile(r'截至.*\d{1,2}月\d{1,2}日')过滤掉包含截至,到,至这种格式,不是发生时间


            '''
            if result[1] == '今天':
                cur_time =  title_time
                print(cur_time)
            else:
                cur_time = result[1].replace('年','-').replace('月','-').replace('日','').replace('号','')

                if int(cur_time.split('-')[0]) < 10 :
                    cur_time = '0' + cur_time
                print(title_time[:5] + cur_time)

    except Exception as e:
        print(e)

返回结果
['2016年11月03日', '今天', '11月2日', '10月31日']
2016-11-03
2016-11-03

从上面结果输出,我们的方案可以正确执行,输入统一格式的日期,在一定概率下,也获取了正确的新闻事件的发生日期,可以保存为格式化的数据,进行入库保存起来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值