精华内容
下载资源
问答
  • datefinder模块可以字符串中提取日期。datefinder模块实现也是用正则,功能很全 但是对中文不友好。但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别...

    有时在处理不规则数据时需要提取文本包含的时间日期。

    dateutil.parser模块可以统一日期字符串格式。

    datefinder模块可以在字符串中提取日期。

    datefinder模块实现也是用正则,功能很全 但是对中文不友好。

    但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别

    例如:

    '2012年12月12日','3小时前','在2012/12/13哈哈','时间2012-12-11 12:22:30','日期2012-13-11','测试2013.12.24','今天12:13'

    import re

    import chardet

    from datetime import datetime,timedelta

    # 匹配正则表达式

    matchs = {

    1:(r'\d{4}%s\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s %%H%s%%M%s%%S%s'),

    2:(r'\d{4}%s\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s %%H%s%%M%s'),

    3:(r'\d{4}%s\d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s'),

    4:(r'\d{2}%s\d{1,2}%s\d{1,2}%s','%%y%s%%m%s%%d%s'),

    # 没有年份

    5:(r'\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s\d{1,2}%s','%%m%s%%d%s %%H%s%%M%s%%S%s'),

    6:(r'\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s','%%m%s%%d%s %%H%s%%M%s'),

    7:(r'\d{1,2}%s\d{1,2}%s','%%m%s%%d%s'),

    # 没有年月日

    8:(r'\d{1,2}%s\d{1,2}%s\d{1,2}%s','%%H%s%%M%s%%S%s'),

    9:(r'\d{1,2}%s\d{1,2}%s','%%H%s%%M%s'),

    }

    # 正则中的%s分割

    splits = [

    {1:[('年','月','日','点','分','秒'),('-','-','',':',':',''),('\/','\/','',':',':',''),('\.','\.','',':',':','')]},

    {2:[('年','月','日','点','分'),('-','-','',':',''),('\/','\/','',':',''),('\.','\.','',':','')]},

    {3:[('年','月','日'),('-','-',''),('\/','\/',''),('\.','\.','')]},

    {4:[('年','月','日'),('-','-',''),('\/','\/',''),('\.','\.','')]},

    {5:[('月','日','点','分','秒'),('-','',':',':',''),('\/','',':',':',''),('\.','',':',':','')]},

    {6:[('月','日','点','分'),('-','',':',''),('\/','',':',''),('\.','',':','')]},

    {7:[('月','日'),('-',''),('\/',''),('\.','')]},

    {8:[('点','分','秒'),(':',':','')]},

    {9:[('点','分'),(':','')]},

    ]

    def func(parten,tp):

    re.search(parten,parten)

    parten_other = '\d+天前|\d+分钟前|\d+小时前|\d+秒前'

    class TimeFinder(object):

    def __init__(self,base_date=None):

    self.base_date = base_date

    self.match_item = []

    self.init_args()

    self.init_match_item()

    def init_args(self):

    # 格式化基础时间

    if not self.base_date:

    self.base_date = datetime.now()

    if self.base_date and not isinstance(self.base_date,datetime):

    try:

    self.base_date = datetime.strptime(self.base_date,'%Y-%m-%d %H:%M:%S')

    except Exception as e:

    raise 'type of base_date must be str of%Y-%m-%d %H:%M:%S or datetime'

    def init_match_item(self):

    # 构建穷举正则匹配公式 及提取的字符串转datetime格式映射

    for item in splits:

    for num,value in item.items():

    match = matchs[num]

    for sp in value:

    tmp = []

    for m in match:

    tmp.append(m%sp)

    self.match_item.append(tuple(tmp))

    def get_time_other(self,text):

    m = re.search('\d+',text)

    if not m:

    return None

    num = int(m.group())

    if '天' in text:

    return self.base_date - timedelta(days=num)

    elif '小时' in text:

    return self.base_date - timedelta(hours=num)

    elif '分钟' in text:

    return self.base_date - timedelta(minutes=num)

    elif '秒' in text:

    return self.base_date - timedelta(seconds=num)

    return None

    def find_time(self,text):

    # 格式化text为str类型

    if isinstance(text,bytes):

    encoding =chardet.detect(text)['encoding']

    text = text.decode(encoding)

    res = []

    parten = '|'.join([x[0] for x in self.match_item])

    parten = parten+ '|' +parten_other

    match_list = re.findall(parten,text)

    if not match_list:

    return None

    for match in match_list:

    for item in self.match_item:

    try:

    date = datetime.strptime(match,item[1].replace('\\',''))

    if date.year==1900:

    date = date.replace(year=self.base_date.year)

    if date.month==1:

    date = date.replace(month=self.base_date.month)

    if date.day==1:

    date = date.replace(day=self.base_date.day)

    res.append(datetime.strftime(date,'%Y-%m-%d %H:%M:%S'))

    break

    except Exception as e:

    date = self.get_time_other(match)

    if date:

    res.append(datetime.strftime(date,'%Y-%m-%d %H:%M:%S'))

    break

    if not res:

    return None

    return res

    def test():

    timefinder =TimeFinder(base_date='2020-04-23 00:00:00')

    for text in ['2012年12月12日','3小时前','在2012/12/13哈哈','时间2012-12-11 12:22:30','日期2012-13-11','测试2013.12.24','今天12:13']:

    res = timefinder.find_time(text)

    print('text----',text)

    print('res---',res)

    if __name__ == '__main__':

    test()

    测试运行结果如下

    text---- 2012年12月12日

    res--- ['2012-12-12 00:00:00']

    text---- 3小时前

    res--- ['2020-04-22 21:00:00']

    text---- 在2012/12/13哈哈

    res--- ['2012-12-13 00:00:00']

    text---- 时间2012-12-11 12:22:30

    res--- ['2012-12-11 12:22:30']

    text---- 日期2012-13-11

    res--- None

    text---- 测试2013.12.24

    res--- ['2013-12-24 00:00:00']

    text---- 今天12:13

    res--- ['2020-04-23 12:13:00']

    到此这篇关于python自动提取文本中的时间(包含中文日期)的文章就介绍到这了,更多相关python自动提取时间内容请搜索龙方网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持龙方网络!

    展开全文
  • 这里构造的日期和时间提取器尝试适配上面两种日/月的表示顺序,并检查以确保是有效的日期 import re from datetime import date import datetime # 美国日期的正则表达式 us = r'((([01]?\d)[-/]([0123]?\d))([-/]...

    在美国,2017 年圣诞节的表示是“12/25/17”,而在欧洲,同一个日子却表示为“25/12/17”。这里构造的日期和时间提取器尝试适配上面两种日/月的表示顺序,并检查以确保是有效的日期

    import re
    from datetime import date
    import datetime
    
    # 美国日期的正则表达式
    us = r'((([01]?\d)[-/]([0123]?\d))([-/]([0123]\d)\d\d)?)'
    mdy = re.findall(us, 'Santa came 12/25/2017. An elf appeared 12/12.')
    print(mdy)
    
    # 结构化提取的日期
    # lstrip() 方法用于截掉字符串左边的空格或指定字符
    dates = [{'mdy': x[0], 'md': x[1], 'm': int(x[2]), 'd': int(x[3]),
                 'y': int(x[4].lstrip('/') or 0), 'c': int(x[5] or 0)} for x in mdy]
    print(dates)
    
    # 基本的上下文管理
    # 使用在内存的结构化数据的上下文中最近读取到的年份来
    # 填充任何缺失的数字字段
    for i, d in enumerate(dates):
        for k, v in d.items():
            if not v:
                d[k] = dates[max(i - 1, 0)][k]
    
    print(dates)
    datetimes = [date(d['y'], d['m'], d['d']) for d in dates]
    print(datetimes)
    
    
    # 欧洲日期的正则表达式
    eu = r'((([0123]?\d)[-/]([01]?\d))([-/]([0123]\d)?\d\d)?)'
    dmy = re.findall(eu, 'Alan Mathison Turing OBE FRS (23/6/1912-7/6/1954) was an English computer scientist.')
    print(dmy)
    dmy = re.findall(eu, 'Alan Mathison Turing OBE FRS (23/6/12-7/6/54) was an English computer scientist.')
    print(dmy)
    
    # 综合提取
    # 识别年份
    # 两位数表示的年份,30-99 = 1930-1999
    yr_19xx = (r'\b(?P<yr_19xx>' +
               '|'.join('{}'.format(i) for i in range(30, 100)) +
               r')\b')
    # 一位或者两位数表示的年份,01-30 = 2001-2030
    # 02d 格式一个整数( d )到最小宽度2( 2 )的字段,左侧填充零(前导 0 )
    yr_20xx = (r'\b(?P<yr_20xx>' +
               '|'.join('{:02d}'.format(i) for i in range(10)) + '|' +
               '|'.join('{}'.format(i) for i in range(10, 30)) +
               r')\b')
    # 3 位数或者 4 位数表示的年份的前几位数字,如“123 A.D.”中的“1”
    # 或者“2018”中的“20”
    yr_cent = r'\b(?P<yr_cent>' + '|'.join('{}'.format(i) for i in range(1, 40)) + r')'
    # 位数或者 4 位数表示的年份的后两位数字,如“123 A.D.”中的“23”
    # 或者“2018”中的“18”
    yr_ccxx = r'(?P<yr_ccxx>' + '|'.join('{:02d}'.format(i) for i in range(0, 100)) + r')\b'
    yr_xxxx = r'\b(?P<yr_xxxx>(' + yr_cent + ')(' + yr_ccxx + r'))\b'
    yr = (r'\b(?P<yr>' +
          yr_19xx + '|' + yr_20xx + '|' + yr_xxxx +
          r')\b')
    # finditer()函数实现每次只返回一个,并且返回所在的位置
    groups = list(re.finditer(yr, "0, 17, 2000, 01, '08, 99, 1984, 2030/1970 85 47 `66"))
    full_years = [g['yr'] for g in groups]
    print(full_years)
    
    # 用正则表达式识别月份名称
    mon_words = 'January February March April May June July August September October November December'
    mon = (r'\b(?P<mon>' + '|'.join('{}|{}|{}|{}|{:02d}'.format(m, m[:4], m[:3], i + 1, i + 1) for i, m in enumerate(mon_words.split())) + r')\b')
    print(re.findall(mon, 'January has 31 days, February the 2nd month of 12, has 28, except in a Leap Year.'))
    
    # 组合信息提取正则表达式
    day = r'(?P<day>' + '|'.join('{:02d}|{}'.format(i, i) for i in range(1, 32)) + r')\b'
    eu = (r'\b(' + day.replace('<day', '<eu_day') + r')\b[-,/ ]{0,2}\b(' + mon.replace('<mon', '<eu_mon') + r')\b[-,/ ]{0,2}\b(' + yr.replace('<yr', '<eu_yr') + r')\b')
    us = (r'\b(' + mon.replace('<mon', '<us_mon') + r')\b[-,/ ]{0,2}\b(' + day.replace('<day', '<us_day') + r')\b[-,/ ]{0,2}\b(' + yr.replace('<yr', '<us_yr') + r')\b')
    date_pattern = r'\b(' + eu + '|' + us + r')\b'
    print(list(re.finditer(date_pattern, '31 Oct, 1970 25/12/2017')))
    
    # 验证日期
    dates = []
    es_groups = list(re.finditer(date_pattern, "0, 12/25/2017, 2000, 01, '08, 99, 1984, 31/10/1970, 85 47 `66"))
    for g in es_groups:
        month_num = (g['us_mon'] or g['eu_mon']).strip()
        try:
            month_num = int(month_num)
        except ValueError:
            month_num = [w[:len(month_num)] for w in mon_words].index(month_num) + 1
        date = datetime.date(int(g['us_yr'] or g['eu_yr']), month_num, int(g['us_day'] or g['eu_day']))
        dates.append(date)
    print("dates:", dates)
    
    
    展开全文
  • datefinder模块可以字符串中提取日期。 datefinder模块实现也是用正则,功能很全 但是对中文不友好。 但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间...
  • datefinder模块可以字符串中提取日期。datefinder模块实现也是用正则,功能很全 但是对中文不友好。但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别...

    有时在处理不规则数据时需要提取文本包含的时间日期。

    dateutil.parser模块可以统一日期字符串格式。

    datefinder模块可以在字符串中提取日期。

    datefinder模块实现也是用正则,功能很全 但是对中文不友好。

    但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别

    例如:

    "2012年12月12日","3小时前","在2012/12/13哈哈","时间2012-12-11 12:22:30","日期2012-13-11","测试2013.12.24","今天12:13"

    import re

    import chardet

    from datetime import datetime,timedelta

    # 匹配正则表达式

    matchs = {

    1:(r"d{4}%sd{1,2}%sd{1,2}%s d{1,2}%sd{1,2}%sd{1,2}%s","%%Y%s%%m%s%%d%s %%H%s%%M%s%%S%s"),

    2:(r"d{4}%sd{1,2}%sd{1,2}%s d{1,2}%sd{1,2}%s","%%Y%s%%m%s%%d%s %%H%s%%M%s"),

    3:(r"d{4}%sd{1,2}%sd{1,2}%s","%%Y%s%%m%s%%d%s"),

    4:(r"d{2}%sd{1,2}%sd{1,2}%s","%%y%s%%m%s%%d%s"),

    # 没有年份

    5:(r"d{1,2}%sd{1,2}%s d{1,2}%sd{1,2}%sd{1,2}%s","%%m%s%%d%s %%H%s%%M%s%%S%s"),

    6:(r"d{1,2}%sd{1,2}%s d{1,2}%sd{1,2}%s","%%m%s%%d%s %%H%s%%M%s"),

    7:(r"d{1,2}%sd{1,2}%s","%%m%s%%d%s"),

    # 没有年月日

    8:(r"d{1,2}%sd{1,2}%sd{1,2}%s","%%H%s%%M%s%%S%s"),

    9:(r"d{1,2}%sd{1,2}%s","%%H%s%%M%s"),

    }

    # 正则中的%s分割

    splits = [

    {1:[("年","月","日","点","分","秒"),("-","-","",":",":",""),("/","/","",":",":",""),(".",".","",":",":","")]},

    {2:[("年","月","日","点","分"),("-","-","",":",""),("/","/","",":",""),(".",".","",":","")]},

    {3:[("年","月","日"),("-","-",""),("/","/",""),(".",".","")]},

    {4:[("年","月","日"),("-","-",""),("/","/",""),(".",".","")]},

    {5:[("月","日","点","分","秒"),("-","",":",":",""),("/","",":",":",""),(".","",":",":","")]},

    {6:[("月","日","点","分"),("-","",":",""),("/","",":",""),(".","",":","")]},

    {7:[("月","日"),("-",""),("/",""),(".","")]},

    {8:[("点","分","秒"),(":",":","")]},

    {9:[("点","分"),(":","")]},

    ]

    def func(parten,tp):

    re.search(parten,parten)

    parten_other = "d+天前|d+分钟前|d+小时前|d+秒前"

    class TimeFinder(object):

    def __init__(self,base_date=None):

    self.base_date = base_date

    self.match_item = []

    self.init_args()

    self.init_match_item()

    def init_args(self):

    # 格式化基础时间

    if not self.base_date:

    self.base_date = datetime.now()

    if self.base_date and not isinstance(self.base_date,datetime):

    try:

    self.base_date = datetime.strptime(self.base_date,"%Y-%m-%d %H:%M:%S")

    except Exception as e:

    raise "type of base_date must be str of%Y-%m-%d %H:%M:%S or datetime"

    def init_match_item(self):

    # 构建穷举正则匹配公式 及提取的字符串转datetime格式映射

    for item in splits:

    for num,value in item.items():

    match = matchs[num]

    for sp in value:

    tmp = []

    for m in match:

    tmp.append(m%sp)

    self.match_item.append(tuple(tmp))

    def get_time_other(self,text):

    m = re.search("d+",text)

    if not m:

    return None

    num = int(m.group())

    if "天" in text:

    return self.base_date - timedelta(days=num)

    elif "小时" in text:

    return self.base_date - timedelta(hours=num)

    elif "分钟" in text:

    return self.base_date - timedelta(minutes=num)

    elif "秒" in text:

    return self.base_date - timedelta(seconds=num)

    return None

    def find_time(self,text):

    # 格式化text为str类型

    if isinstance(text,bytes):

    encoding =chardet.detect(text)["encoding"]

    text = text.decode(encoding)

    res = []

    parten = "|".join([x[0] for x in self.match_item])

    parten = parten+ "|" +parten_other

    match_list = re.findall(parten,text)

    if not match_list:

    return None

    for match in match_list:

    for item in self.match_item:

    try:

    date = datetime.strptime(match,item[1].replace("\",""))

    if date.year==1900:

    date = date.replace(year=self.base_date.year)

    if date.month==1:

    date = date.replace(month=self.base_date.month)

    if date.day==1:

    date = date.replace(day=self.base_date.day)

    res.append(datetime.strftime(date,"%Y-%m-%d %H:%M:%S"))

    break

    except Exception as e:

    date = self.get_time_other(match)

    if date:

    res.append(datetime.strftime(date,"%Y-%m-%d %H:%M:%S"))

    break

    if not res:

    return None

    return res

    def test():

    timefinder =TimeFinder(base_date="2020-04-23 00:00:00")

    for text in ["2012年12月12日","3小时前","在2012/12/13哈哈","时间2012-12-11 12:22:30","日期2012-13-11","测试2013.12.24","今天12:13"]:

    res = timefinder.find_time(text)

    print("text----",text)

    print("res---",res)

    if __name__ == "__main__":

    test()

    测试运行结果如下

    text---- 2012年12月12日

    res--- ["2012-12-12 00:00:00"]

    text---- 3小时前

    res--- ["2020-04-22 21:00:00"]

    text---- 在2012/12/13哈哈

    res--- ["2012-12-13 00:00:00"]

    text---- 时间2012-12-11 12:22:30

    res--- ["2012-12-11 12:22:30"]

    text---- 日期2012-13-11

    res--- None

    text---- 测试2013.12.24

    res--- ["2013-12-24 00:00:00"]

    text---- 今天12:13

    res--- ["2020-04-23 12:13:00"]

    到此这篇关于python自动提取文本中的时间(包含中文日期)的文章就介绍到这了,更多相关python自动提取时间内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

    原文链接:https://www.cnblogs.com/i-love-python/p/12763063.html

    展开全文
  • datefinder模块可以字符串中提取日期。datefinder模块实现也是用正则,功能很全 但是对中文不友好。但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别...

    有时在处理不规则数据时需要提取文本包含的时间日期。

    dateutil.parser模块可以统一日期字符串格式。

    datefinder模块可以在字符串中提取日期。

    datefinder模块实现也是用正则,功能很全 但是对中文不友好。

    但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别

    例如:

    '2012年12月12日','3小时前','在2012/12/13哈哈','时间2012-12-11 12:22:30','日期2012-13-11','测试2013.12.24','今天12:13'

    import re

    import chardet

    from datetime import datetime,timedelta

    # 匹配正则表达式

    matchs = {

    1:(r'\d{4}%s\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s %%H%s%%M%s%%S%s'),

    2:(r'\d{4}%s\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s %%H%s%%M%s'),

    3:(r'\d{4}%s\d{1,2}%s\d{1,2}%s','%%Y%s%%m%s%%d%s'),

    4:(r'\d{2}%s\d{1,2}%s\d{1,2}%s','%%y%s%%m%s%%d%s'),

    # 没有年份

    5:(r'\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s\d{1,2}%s','%%m%s%%d%s %%H%s%%M%s%%S%s'),

    6:(r'\d{1,2}%s\d{1,2}%s \d{1,2}%s\d{1,2}%s','%%m%s%%d%s %%H%s%%M%s'),

    7:(r'\d{1,2}%s\d{1,2}%s','%%m%s%%d%s'),

    # 没有年月日

    8:(r'\d{1,2}%s\d{1,2}%s\d{1,2}%s','%%H%s%%M%s%%S%s'),

    9:(r'\d{1,2}%s\d{1,2}%s','%%H%s%%M%s'),

    }

    # 正则中的%s分割

    splits = [

    {1:[('年','月','日','点','分','秒'),('-','-','',':',':',''),('\/','\/','',':',':',''),('\.','\.','',':',':','')]},

    {2:[('年','月','日','点','分'),('-','-','',':',''),('\/','\/','',':',''),('\.','\.','',':','')]},

    {3:[('年','月','日'),('-','-',''),('\/','\/',''),('\.','\.','')]},

    {4:[('年','月','日'),('-','-',''),('\/','\/',''),('\.','\.','')]},

    {5:[('月','日','点','分','秒'),('-','',':',':',''),('\/','',':',':',''),('\.','',':',':','')]},

    {6:[('月','日','点','分'),('-','',':',''),('\/','',':',''),('\.','',':','')]},

    {7:[('月','日'),('-',''),('\/',''),('\.','')]},

    {8:[('点','分','秒'),(':',':','')]},

    {9:[('点','分'),(':','')]},

    ]

    def func(parten,tp):

    re.search(parten,parten)

    parten_other = '\d+天前|\d+分钟前|\d+小时前|\d+秒前'

    class TimeFinder(object):

    def __init__(self,base_date=None):

    self.base_date = base_date

    self.match_item = []

    self.init_args()

    self.init_match_item()

    def init_args(self):

    # 格式化基础时间

    if not self.base_date:

    self.base_date = datetime.now()

    if self.base_date and not isinstance(self.base_date,datetime):

    try:

    self.base_date = datetime.strptime(self.base_date,'%Y-%m-%d %H:%M:%S')

    except Exception as e:

    raise 'type of base_date must be str of%Y-%m-%d %H:%M:%S or datetime'

    def init_match_item(self):

    # 构建穷举正则匹配公式 及提取的字符串转datetime格式映射

    for item in splits:

    for num,value in item.items():

    match = matchs[num]

    for sp in value:

    tmp = []

    for m in match:

    tmp.append(m%sp)

    self.match_item.append(tuple(tmp))

    def get_time_other(self,text):

    m = re.search('\d+',text)

    if not m:

    return None

    num = int(m.group())

    if '天' in text:

    return self.base_date - timedelta(days=num)

    elif '小时' in text:

    return self.base_date - timedelta(hours=num)

    elif '分钟' in text:

    return self.base_date - timedelta(minutes=num)

    elif '秒' in text:

    return self.base_date - timedelta(seconds=num)

    return None

    def find_time(self,text):

    # 格式化text为str类型

    if isinstance(text,bytes):

    encoding =chardet.detect(text)['encoding']

    text = text.decode(encoding)

    res = []

    parten = '|'.join([x[0] for x in self.match_item])

    parten = parten+ '|' +parten_other

    match_list = re.findall(parten,text)

    if not match_list:

    return None

    for match in match_list:

    for item in self.match_item:

    try:

    date = datetime.strptime(match,item[1].replace('\\',''))

    if date.year==1900:

    date = date.replace(year=self.base_date.year)

    if date.month==1:

    date = date.replace(month=self.base_date.month)

    if date.day==1:

    date = date.replace(day=self.base_date.day)

    res.append(datetime.strftime(date,'%Y-%m-%d %H:%M:%S'))

    break

    except Exception as e:

    date = self.get_time_other(match)

    if date:

    res.append(datetime.strftime(date,'%Y-%m-%d %H:%M:%S'))

    break

    if not res:

    return None

    return res

    def test():

    timefinder =TimeFinder(base_date='2020-04-23 00:00:00')

    for text in ['2012年12月12日','3小时前','在2012/12/13哈哈','时间2012-12-11 12:22:30','日期2012-13-11','测试2013.12.24','今天12:13']:

    res = timefinder.find_time(text)

    print('text----',text)

    print('res---',res)

    if __name__ == '__main__':

    test()

    测试运行结果如下

    text---- 2012年12月12日

    res--- ['2012-12-12 00:00:00']

    text---- 3小时前

    res--- ['2020-04-22 21:00:00']

    text---- 在2012/12/13哈哈

    res--- ['2012-12-13 00:00:00']

    text---- 时间2012-12-11 12:22:30

    res--- ['2012-12-11 12:22:30']

    text---- 日期2012-13-11

    res--- None

    text---- 测试2013.12.24

    res--- ['2013-12-24 00:00:00']

    text---- 今天12:13

    res--- ['2020-04-23 12:13:00']

    到此这篇关于python自动提取文本中的时间(包含中文日期)的文章就介绍到这了,更多相关python自动提取时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    展开全文
  • 我有以下变量,标头等于:Andrew AnglinDaily StormerFebruary 11, 2017我只想从此变量中提取日期2017年2月11日.如何python中使用BeautifulSoup做到这一点?解决方法:如果您知道日期始终是header变量中的最后一个...
  • 一个data文件夹存在多个指定格式的TXT文本文件,可以按照人员和数据的日期提取自己所需要的数据,更改源码可以实现不同格式的数据的提取。 注意事项: 1、开发环境为Visual Studio 2010,使用.net 2.0开发 ...
  • 由于日期格式的特殊性,我们用函数提取其中的年份或者月份的时候,就不能用mid函数了,mid函数主要是提取单元格中值的中间某些字符,比如我们有一些文本格式的字符或者其他一些字符串,比如身份证提取其中的年月日...
  • 还是年报问询函的研究,需要从问询函文本中提取交易所要求回复的日期,同时还需要从公司回复的文本中提取公司实际上回复的日期。因此需要对两类文本分别进行分析。 解决思路 通过观察,发现问询函中含有交易所要求...
  • 一个data文件夹存在多个指定格式的TXT文本文件,可以按照人员和数据的日期提取自己所需要的数据,更改源码可以实现不同格式的数据的提取。注意事项:1、开发环境为Visual Studio 2010,使用.net 2.0开发
  • 7,8)Mid函数:用于截取出指定数量的字符第一参数:B2,需要提取的字符串第二参数:7,从字串符的第7位开始提取第三参数:8,提取8位数转换文本格式将提取出的出生日期转换为年月份的文本格式D2单元格输入公式=Text...
  • 更新:关于我的第二个问题(如何MySQL中将字符串转换为日期格式),我找到了一种方法并想分享它:1)将"字符串日期"数据保存为varchar(不使用文本)2)当以php或其他方式显示mysql数据时,使用str_to_date函数(字符串...
  • python3.4.3实现txt文本指定字符提取

    万次阅读 2017-09-01 14:56:38
    TXT文档中提取指定文本 每天上班的路上,都会地铁上看看高晓松的《鱼羊野史》。很有意思的一本书,口头语言记录成册,来自《晓松奇谈》。每天都会按着日期看,今天是哪一天就翻到哪一天,看看历史上的今天发生了...
  • Python日期实体提取

    千次阅读 2019-12-04 21:16:44
    用户的语音发送给后台进行请求时已经转换成中文文本,然而由于语音转换工具的识别问题,许多日期类的数据并不是严格的数字,会出现诸如“六月12”“2016年八月”“20160812”“后天下午”等形式。 例如“我要今天...
  • 建立日期:2019年1月30日 NLP-Flask网站 ...执行 运行api.py 运行代码后,打开它给您的URL 多田!! 网络应用程序将打开!...它会给打开一个链接单击,该Web应用程序将您的Web浏览器打开。 #为NLP创建Flask网站
  • 今天考呀呀会计教育和大家分享,如何员工身份证,快速提取出生日期,自动生成年龄。出生日期提取在C2单元格输入公式=Mid(B2,7,8)。Mid函数:用于截取出指定数量的字符。第一参数:B2,需要提取的字符串。第二...
  • 从身份证号中提取出生日期是职场中作为HR必须掌握知识点,而今天读书屋OFFICE网陈飞讲解的是通过MID函数和分列命令完成的。相比使用DATE日期拼接函数更为快捷。 MID函数作用:从文本中指定一个位置开始然后获取指定...
  • ▶▶▶点右上角的关注,获取更多相关内容◀◀◀前面几期中我们学习了文本函数和日期函数的基本用法,今天我们就来学习一下从文本提取日期然后计算的方法。在上图,我们看到了B列里有身份证号码,我们现在需要...
  • 实际工作中,我们时常整理员工资料或客户信息时需要从身份证号中提取对应人员的出生日期等看似重复繁琐的工作,是不是瞬间觉得工作量好大。机智的同学,第一时间会想到使用Excel公式或函数来提取整理。但是,...
  • TXT文档中提取指定文本 每天上班的路上,都会地铁上看看高晓松的《鱼羊野史》。很有意思的一本书,口头语言记录成册,来自《晓松奇谈》。每天都会按着日期看,今天是哪一天就翻到哪一天,看看历史上的今天发生...
  • 应用场景下图表格A列身份证号第7到14位数字为出生日期,将其提取出来返回至B列,并转换为用斜杠“/”分隔的...公式说明:=MID(A2,7,8)意为从A2单元格文本字符串的第7个字符开始提取,共提取8个字符(出生日...
  • SwiftyChrono, Swift ( 从 chrono.js 移植) 中,自然语言日期解析器 SwiftyChrono Swift 中的自然语言日期分析器,旨在从任何给定文本中提取日期信息。,集成Siri应用程序我们发现JavascriptCore运行时资源...
  • 现有一个文本格式的数据,表头如下: <code>"卡号" "编号" "姓名" "日期" "SSSS" "REPORT_EXAM_TYPE" "REPORT_DATE" "REPORT_EXAM_...
  • 文章目录1、函数2、使用函数2.1 文本处理函数2.2 日期和时间处理...3. 用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数。 4.返回DBMS正使用的特殊信息
  • 文章目录1. 函数2. 使用函数2.1 文本处理函数2.2 日期和时间处理函数2.3 数值处理函数 1. 函数 SQL 语句不一样,SQL 函数不是...用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期 之差,检查日期有效性
  • 身份证里面包含了很多个人信息,其中出生日期是最常用的。假如有一份员工信息表,...这里需要用到提取函数--MID函数① 作用:从文本字符串指定位置开始,返回指定长度的字符串。② 语法:MID(字符串,开始位置,...
  • 实际的问题是提取日期,电子邮件地址和时间从excel表,然后计数某人多少时间花一个项目一段时间,最后做一个数据透视表(这是粗糙的意思)。首先要做的是提取数据。有一个文本列函数excel,但处理数据与坏的影响...
  • 实现功能:利用awk强大的文本处理功能,对info日志“error”-->所在行及其下一行 进行提取并重定向到指定txt; #昨天日期 注意 `` DATE=`date+”%Y-%m-%d” –d “-24hour”` #原日志地址 bill_path=/data/...
  • Python 时间提取并格式化处理

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

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 316
精华内容 126
关键字:

在文本中提取日期