用正则表达式解析和提取数据

正则表达式是一种非常好用的信息提取手段,它可以高效的从文本中提取所需信息。

1、findall()函数

基本语法格式:

re.findall(匹配规则,原始文本)

例子:提取“Hello 123 World!”中的3个数字。

匹配规则中,‘/d’表示匹配一个数字,连续三个‘/d’就表示匹配连续的三个数字。

返回的结果是一个含有字符串元素的列表,而不是单纯的字符串或者数字。

常见的匹配符

符号

含义

\d

匹配1个数字字符

\w

匹配1个字母、数字或下划线字符

\s

匹配1个空白字符(换行符、制表符、普通空格等)

\S

匹配1个非空白字符

\n

匹配1个换行符(相当于按下一次回车)

\t

匹配1个制表符(相当于按下Tab键或者8次空格键)

.

匹配1个任意字符,换行符除外

*

匹配0个或者多个表达式

+

匹配1个或者多个表达式

?

常与“.”和“*”配合使用,组成非贪婪匹配

()

匹配括号内的表达式,也表示一个组

2、非贪婪匹配“(.*?)

“.”表示匹配除了换行符以外的1个任意字符,“*”表示匹配0个或者多个表达式,两者合在一起“.*”则称的规则称为贪婪匹配,如果后面再加上“?”就变成了非贪婪匹配。

“(.*?)”用于提取文本A与文本B之间的内容,并不需要知道内容的确切长度和格式,但是需要知道内容位于哪两串文本之间,基本语法如下:

文本A(.*?)文本B

3、非贪婪匹配“.*?

另一种非贪婪匹配的语法格式如下:

文本A.*?文本B

“.*?”用于代替文本A和文本B之间的所有内容,因为文本A和文本B之间的内容经常变动或者毫无规律,不能直接写到匹配规则里面,也或者文本A和文本B之间的内容很多,不方便写到匹配规则里面。

4、自动考虑换行的修饰符re.S

修饰符有很多,最常用的是re.S,其作用是让findall()函数再查找时可以自动考虑换行的影响,使得贪婪匹配可以匹配换行。

基本的语法格式如下:

re.findall(匹配规则,原始文本,re.S)

5、辅助功能介绍

sub()函数

sub()函数名称源于英文单词substitute(替换),作用是清洗正则表达式提取出来的内容,其基本语法如下:

re.sub(需要替换的内容,替换值,原字符串)

比如正则表达式提取出来的内容中还夹杂着一些无用内容,传统的处理方式是使用replace()函数处理,当然也可以,但是使用sub()函数则更加灵活高效。

其中的“<.*?>”代表任何“<***>”形式的字符串,这样一来自然涵盖了全部内容。

中括号“[ ]”的用法

在正则表达式中,“.”、“*”、“?”等符号都有特殊的含义,那么如果想要匹配的就是这些字符怎么办呢?这里就需要使用中括号“[ ]”,取消这些符号的特殊含义。

6、综合实例

爬取某小说网上某部小说的全部章节,保存到本地txt文件中。

【学习笔记】37、用正则表达式解析和提取数据相关推荐

  1. fillna填充某一列_pandas学习笔记 -了解数据集基本情况,提取数据,缺失值NULL的判断,删除和补充(dropna,fillna的用法)...

    part1 了解数据集基本情况 当我们面对一个很大的数据集的时候,如何快速得到他的行数与列数呢? 举个栗子,我们读取一个nhanes数据集,我们加上一个.shape,输出的结果就是他的行数和列数了. ...

  2. 影像组学视频学习笔记(34)-使用3D Slicer软件提取影像组学特征、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/afcd06221ea4 来源:简书,已获授权转载 RadiomicsWorld.com "影像组学世界" ...

  3. linux软件包管理解析,linux学习笔记_09_软件包管理解析.doc

    linux学习笔记_09_软件包管理解析 软件包管理 软件包分类 源码包(C语言编写的源代码) linux主要由C语言来写. 源码包可以用写字板打开 脚本安装包:源码包进行再开发的源码包(提供安装界面 ...

  4. XML学习笔记02【xml_解析】

    Java后端 学习路线 笔记汇总表[黑马程序员] XML学习笔记01[xml_基础.xml_约束][day01] XML学习笔记02[xml_解析][day01] 目录 03 xml_解析 xml_解 ...

  5. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)

    写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持) 参考文章: (1)写给大忙人的ELK最新版6.2.4学习笔记-Logstash ...

  6. NDK学习笔记:FFmpeg解压MP34提取音频PCM(swrContext、swr_alloc_set_opts)

    NDK学习笔记:FFmpeg解压MP34提取音频PCM 承接 FFmpeg解压MP4提取视频YUV ,这次我们需要提取的是音频原始数据PCM.代码流程大同小异,主要区别就是AVFrame->PC ...

  7. Liunx学习笔记 - 07 - 02 正则表达式与文件格式化处理

    Liunx学习笔记 - 07 - 02 正则表达式与文件格式化处理 1 前言:啥是正则表达式 简单来讲,正则表达式是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的 ...

  8. poi 顺序解析word_JavaPOI解析word提取数据到excel

    Java POI解析Word提取数据存储在Excel 一.了解POI POI以前有了解,这次需求是解析word读取其中标题,还有内容赛选获取自己想要的内容 经过两天的学习,开始熟悉Java这么读取wo ...

  9. Java POI解析Word提取数据存储在Excel

    JavaPOI解析word提取数据到excel 一.了解POI POI以前有了解,这次需求是解析word读取其中标题,还有内容赛选获取自己想要的内容 经过两天的学习,开始熟悉Java这么读取word和 ...

最新文章

  1. 腾讯老照片修复算法开源,细节到头发丝,3种预训练模型可下载 | GitHub热榜
  2. oracle生成xml格式化,介绍关于Oracle下存取XML格式数据的方式教程一览
  3. python语言入门n-Python基础语法学习笔记
  4. java碰到边界变颜色_求教!!!小球撞墙怎么改变颜色。
  5. ajax修改按钮的html值,ajax - 在yii 1中使用ajax根据选定的单选按钮选项更新html字段值 - 堆栈内存溢出...
  6. css3点击会移动到点,CSS3过渡点击事件
  7. 企业为什么要做SEO,它的重要性有哪些?
  8. 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云
  9. Vue中的scoped和scoped穿透
  10. C#面向对象三大特性
  11. [HNOI2011]数学作业 题解
  12. Matlab美图秀秀
  13. Java之JvisualVM简介
  14. PHP第一季视频教程.李炎恢.学习笔记(五)(第3章 操作符与控制结构(1)(2))
  15. 秒杀系统设计的关键点思考
  16. BZOJ1050 [HAOI2006]旅行comf(Kruskal算法)
  17. docker-elastic7.9.3集群搭建并开启用户验证
  18. 白茶清欢无别事,我在等风也等你,苦酒折柳今相离,无风无月也无你
  19. IOS Label下划线 中划线
  20. Word 2016 撰写论文(1): 公式居中、编号右对齐

热门文章

  1. 斐波那契数列算法分析
  2. PMCAFF 八周年老友会倒计时 | 北京活动
  3. PMCAFF | 11张图告诉你产品经理的正确思维方式
  4. PMcaff 2015上半年干货精选,不容错过哦~
  5. 从快的打车:说O2O产品的奇特推广模式
  6. vue-router 源码:路由的安装与初始化
  7. sqlmap常用操作命令
  8. Spring【AOP模块】就是这么简单
  9. 浅析Unity中的Enlighten与混合光照
  10. PowerShell在Exchange2010下交互式创建域用户和邮箱