python 正则表达式获取字符串中所有的日期和时间

提取日期前的处理

1.处理文本数据的日期格式统一化

text = "2015年8月31日,衢州元立金属制品有限公司仓储公司(以下简称元立仓储公司)成品仓库发生一起物体打击事故,造成直接经济损失95万元。"
text1 = "2015/12/28下达行政处罚决定书"
text2 = "2015年8月发生一起物体打击事故"
# 对文本处理一下 # 2015-8-31  2015-12-28
text = text.replace("年", "-").replace("月", "-").replace("日", " ").replace("/", "-").strip()

2.提取时间的正则表达式

# 2019年10月27日 9:46:21
"(\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2})"
# 2019年10月27日 9:46"
"(\d{4}-\d{1,2}-\d{1,2})"
# 2019年10月27日
"(\d{4}-\d{1,2}-\d{1,2})"
# 2019年10月
"(\d{4}-\d{1,2})"

3.对其进行封装

def get_strtime(text):
 text = text.replace("年", "-").replace("月", "-").replace("日", " ").replace("/", "-").strip()
 text = re.sub("\s+", " ", text)
 t = ""
 regex_list = [
 # 2013年8月15日 22:46:21
    "(\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2})",
    # "2013年8月15日 22:46"
    "(\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2})",
    # "2014年5月11日"
    "(\d{4}-\d{1,2}-\d{1,2})",
    # "2014年5月"
    "(\d{4}-\d{1,2})",
 ]
 for regex in regex_list:
 t = re.search(regex, text)
 if t:
  t = t.group(1)
  return t
 else:
 print("没有获取到有效日期")

 return t

ps:下面看下python提取字符串中日期

import re
#删除字符串中的中文字符
def subChar(str):
  match=re.compile(u'[\u4e00-\u9fa5]')
  return match.sub('',str)

#提取日期
def extractDate(str):
  if not str:
    return None
  raw=subChar(str)
  if not raw:
    return None
  #提取前10位字符
  rawdate=raw[:10]
  datelist=re.findall("\d+",rawdate)
  if not datelist:
    return None
  if datelist.__len__()==3:
    if (float(datelist[0])>2099 or float(datelist[0])<1900) or float(datelist[1])>12 or float(datelist[2])>31:
      return None
    else:
      return '-'.join(datelist)
  if datelist.__len__()==2:
    if (float(datelist[0])>2099 or float(datelist[0])<1900) or float(datelist[1])>12:
      return None
    else:
      datelist.append('01')
      return '-'.join(datelist)
  if datelist.__len__()==1:
    if float(datelist[0])>20991231 or float(datelist[0])<19000101:
      return None
    else:
      return datelist[0]
  return None

总结

以上所述是小编给大家介绍的python 正则表达式获取字符串中所有的日期和时间,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • python正则表达式从字符串中提取数字的思路详解

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## \D 匹配任意非数字字符. ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符). ## x* 匹配0次或者多次 x 字符. ## x+ 匹配1次或者多次 x 字符. ## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次. ## (a|b|c) 要么匹配

  • python字符串中匹配数字的正则表达式

    Python 正则表达式简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本章节给大家介

  • python利用正则表达式提取字符串

    前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串.日志分析会遇到这种情况,下面我会分别讲一下对应的方法. 一.单个位置的字符串提取 这种情况我们可以使用(.+?)这个正则表达式来提取. 举例,一个字符串"a123b",如果我们想提取ab之间的值123,可以使用findall配合正则表达式,这样会返回一个包含所以符合情况的list. 代码如下: import re str = "

  • python使用正则表达式匹配字符串开头并打印示例

    本文实例讲述了python使用正则表达式匹配字符串开头并打印的方法.分享给大家供大家参考,具体如下: import re s="name=z1hangshan username=fff url=www.baidu.com password=ddd256" s2="username=fff name=z1hangshan url=www.baidu.com password=ddd256" #p=re.compile(r'((?:\s)name=(\S)+)') p=

  • Python 正则表达式匹配字符串中的http链接方法

    利用Python正则表达式匹配字符串中的http链接.主要难点是用正则表示出http 链接的模式. import re pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') # 匹配模式 string = 'Its after 12 noon, do you know where your rooftops are? http://tinyur

  • python正则表达式判断字符串是否是全部小写示例

    复制代码 代码如下: # -*- coding: cp936 -*-import re  s1 = 'adkkdk's2 = 'abc123efg' an = re.search('^[a-z]+$', s1)if an:    print 's1:', an.group(), '全为小写' else:    print s1, "不全是小写!" an = re.match('[a-z]+$', s2)if an:    print 's2:', an.group(), '全为小写'

  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

  • Python正则表达式如何进行字符串替换实例

    Python正则表达式在使用中会经常应用到字符串替换的代码.有很多人都不知道如何解决这个问题,下面的代码就告诉你其实这个问题无比的简单,希望你有所收获. 1.替换所有匹配的子串用newstring替换subject中所有与正则表达式regex匹配的子串 result, number = re.subn(regex, newstring, subject) 2.替换所有匹配的子串(使 用正则表达式对象) rereobj = re.compile(regex) result, number = re

  • python 正则表达式获取字符串中所有的日期和时间

    提取日期前的处理 1.处理文本数据的日期格式统一化 text = "2015年8月31日,衢州元立金属制品有限公司仓储公司(以下简称元立仓储公司)成品仓库发生一起物体打击事故,造成直接经济损失95万元." text1 = "2015/12/28下达行政处罚决定书" text2 = "2015年8月发生一起物体打击事故" # 对文本处理一下 # 2015-8-31 2015-12-28 text = text.replace("年&quo

  • Python正则表达式匹配字符串中的数字

    1.使用"\d+"匹配全数字 代码: import re zen = "Arizona 479, 501, 870. Carlifornia 209, 213, 650." m = re.findall("\d+", zen) print(m) 结果: ['479', '501', '870', '209', '213', '650'] 但是上述这种方式也会引入非纯数据,例子如下: import re zen = "Arizona 47

  • JS正则表达式获取字符串中特定字符的方法

    实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test 实现的机制:通过replace的回调函数获取. 代码: 复制代码 代码如下: var str = "abcdefgname='test'sddfhskshjsfsjdfps"; var reg = /name='((\w|-|\s)+)/ig; str.replace(reg, function() { console.log(arguments.length);

  • Java通过正则表达式获取字符串中数字的方法示例

    前言 本文通过一个小范例来学习java中通过正则表达式如何获得一个字符串中的数字,下面话不多说,来看看详细的介绍吧. 示例代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { String strInput = "3a7s10@5d2a6s17s56;33"; String reg

  • php使用正则表达式获取字符串中的URL

    今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下: $str ='本文实例讲述了php匹配字符串里所有URL地址的方法.http://www.manongjc.com 分享给大家供大家参考'; preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$st

  • python获取字符串中的email

    目录  调用re库,通过使用compile.findall获取字符串中的email import re email=re.compile(r'[a-z0-9\-\.]+@[0-9a-z\-\.]+') emailtest=r'adfasldfjdsl fan02@163.com' emailset=set() for em in email.findall(emailtest):     emailset.add(em) for em1 in sorted(emailset):     prin

  • java如何从不规则的字符串中截取出日期

    目录 从不规则的字符串中截取出日期 代码 没有升级的输出结果 将yyyy/MM/dd形式的不规则日期转换成规则形式 代码如下 从不规则的字符串中截取出日期 最近在项目中需要远程调接口,从String字符串中截取出日期,想了好久,最后用java8新特性,解决了,java8,还是比较好用. 代码 获取到的字符串,例如: 焦化化产车间四期出水(测试排口),2019/10/19 10:00:00,pH平均值 超标,值:5.00 炼焦一车间焦炉推焦除尘(测试排口)2019/7/14 14:00:00,二氧

  • php结合正则获取字符串中数字

    php结合正则获取字符串中数字 <?php $patterns = "/\d+/"; //第一种 //$patterns = "/\d/"; //第二种 $strs="left:0px;top:202px;width:90px;height:30px"; preg_match_all($patterns,$strs,$arr); print_r($arr); /***************运行结果*********************

随机推荐