注:文章原文为Dr. Charles Severance 的 《Python for Informatics》。文中代码用3.4版改写,并在本机测试通过。

目前为止,我们一直在通读文件,查找模式和抽取字里行间我们感兴趣的各种信息。我们一直在使用像split和find的字符串方法,以及列表和字符串的切片功能来抽取行中的部分内容。

像这样的查找和抽取任务是如此常见,所以Python拥有一个非常强大的库——正则表达式(regular expressions)来优雅地处理这些任务。我们未早一点介绍正则表达式是因为,虽然它们很强大,但是有点复杂,并且需要一些时间去适应它们的语法。

正式表达式近乎是一个用来查找和分析字符串的小型编程语言。事实上,关于正则表达式可以写一本完整的书。在这一章,我们将只涉及其基础。想要获得正则表达式的更多信息,请参阅:

在你使用正则表达式前,你必须将库文件导入到你的程序。正则表达式最简单的应用是search()函数,下面的程序将演示search函数的小应用。

1 importre2 hand = open('mbox-short.txt')3 for line inhand:4 line =line.rstrip()5 if re.search('From:', line):6 print(line)

我们打开mbox-short文件,循环读取每一行,并用正则表达式的search()来查找包含“From:”字符串的行,然后打印输出这些行。这个程序并未运用正则表达式的真实能力,因为我们只要简单的使用line.find()也可实现同样的结果。

当我们在查询字符串中添加特殊字符,使得我们可以更加精确的控制那些匹配字符串的行,这时候正则表达式的能力就开始显现。在正则表达式中添加那些特殊字符可以让我们用非常少的代码实现复杂的匹配和抽取。

例如,正则表达式中用插入符号^来匹配一行中的开始。我们只要在查询字符前添加一个插入符,就可将程序修改为只匹配打印以“From:"开始的行,具体代码如下:

1 importre2 hand = open('mbox-short.txt')3 for line inhand:4 line =line.rstrip()5 if re.search('^From:', line)6 print(line)

现在,我们将只匹配以”From:“开始的行。这个简单的例子我们可以用字符串库的startswith()方法同样实现。这个例子用来告诉我们这样一个概念,包含特殊字符的正则表达式将给我们更强的控制。

注:原文给的代码是2.7版,因为我自己使用的是3.4版,所以将print line 修改为 print(line)。因为能力有限,今天先到此为止,明天继续。

python for informatics_Python for Informatics 第11章 正则表达式一(译)相关推荐

  1. Python for Informatics 第11章 正则表达式五(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.4 转义字符 之前我们在正 ...

  2. 弟子规python编程游戏_《Python游戏趣味编程》 第11章 消灭星星

    知乎视频​www.zhihu.com 图书简介可以看这里: 童晶:<Python游戏趣味编程>新书上架了​zhuanlan.zhihu.com 消灭星星是一款非常容易上瘾的消除类游戏,只需 ...

  3. 《Python游戏趣味编程》 第11章 消灭星星

    11 消灭星星 图书简介可以看这里: 童晶:<Python游戏趣味编程>新书上架了 消灭星星是一款非常容易上瘾的消除类游戏,只需点击一个方块,如果和其连接的有两个或两个以上颜色相同的方块即 ...

  4. 《用Python进行自然语言处理》第 11 章 语言数据管理

    1. 我们如何设计一种新的语言资源,并确保它的覆盖面.平衡以及支持广泛用途的文 档? 2. 现有数据对某些分析工具格式不兼容,我们如何才能将其转换成合适的格式? 3. 有什么好的方法来记录我们已经创建 ...

  5. python封装类在当前文件中使用_name_下调用不了_学python中对于类怎么也不明白,对了是看到简明教程11章,类与变量的对象....想要通俗易懂的答案....

    代码(简明python教程第11章,感觉看懂了大半但是其中我没调用的为什么也有...谢谢!!!):#coding:utf-8#数据结构好抽象啊..#python的空格制表位,是灾难的开始啊#init制 ...

  6. 第 11 章 Python 第三方库纵览

    整理的文章内容主要来源为高教版<计算机等级考试二级 Python>教程视频讲义,并且更正了原讲义中的错误的地方. 专栏文章索引如下: 考试大纲 第 1 章 程序设计基本方法 第 2 章 P ...

  7. 《Python数据分析与挖掘实战》第11章——应用系统负载分析与磁盘容量预测(时间序列)

    文章目录 1.背景与目标分析 2.2 数据探索 2.1 查看数据信息 2.2 数据平稳性分析 3 数据预处理 3.1 数据清洗 3.2 数据变换--属性构造 4 模型构建 4.1 确定模型-- ARM ...

  8. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第11章 语言数据管理

    第11章 语言数据管理 11.1 语料库结构:一个案例研究 主要设计特点 基本数据类型 11.2 语料库生命周期 语料库创建的三种方案 质量控制 维护与演变 11.3 数据采集 从网上获取数据 从字处 ...

  9. python编程从入门到实践课后题答案-《Python编程:从入门到实践》课后习题及答案—第11章...

    第11章 测试代码 11-1 城市和国家 :编写一个函数,它接受两个形参:一个城市名和一个国家名.这个函数返回一个格式为City, Country 的字符串,如Santiago, Chile .将这个 ...

最新文章

  1. SCOPE_IDENTITY()
  2. 31 天重构学习笔记索引
  3. Ubuntu系统下载缓慢,以及更新源卡住不动(终极解决方案)
  4. 实战Vue简易项目(2)定制开发环境
  5. Android.mk中添加宏定义
  6. java中解决组件重叠的问题(例如鼠标移动组件时)
  7. python3获取用户输入_python3.4控制用户输入与输出
  8. ssd目标检测训练自己的数据_目标检测Tensorflow object detection API之训练自己的数据集...
  9. 荣耀平板5升级鸿蒙,荣耀能否“升级”鸿蒙?赵明正式确认:华为做得好会考虑采用!...
  10. phpstudy探针文件
  11. Ubuntu 21 英国键盘布局修改参考方案
  12. 生信文献学习(part1)--PRECISE: a ... approach to transfer predictors of drug response from pre-clinical ...
  13. 小胡时隔两年的第二篇Blog
  14. Android画布放大缩小,android画板---涂鸦,缩放,旋转,贴纸实现
  15. [BJDCTF2020]Mark loves cat 1——(超详细 三种方法)
  16. 鼠标绘制工具加是否超出范围判断
  17. 谷歌学术国内镜像网址收集-查文献
  18. java buildpack是什么_javabuildpack改造
  19. SCA可达性分析基础知识普及
  20. revit综合建模步骤:怎么设置整个楼层显示在一个视图上

热门文章

  1. java unicode32_【JAVA SE基础篇】32.String类入门
  2. 纯手写实现HashMap
  3. Bytom的链式交易和花费未确认的交易
  4. 多线程实现生产者消费者
  5. 【原创】轻量级移动端即时通讯技术 MobileIMSDK 发布了
  6. 碎裂效果尝试(clip-path篇)
  7. [转]VSS中创建分支
  8. SQL数据库语言基础之SqlServer表数据的插入、更新与删除
  9. 电脑保密检查清除痕迹_保密安全|2020年国家安全与保密宣传周来啦!
  10. 07:有趣的跳跃【一维数组】