Python for Informatics 第11章 正则表达式(一)

yipeiwu_com5年前Python基础

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

注:以下文章原文来自于Dr Charles Severance 的 《Python for Informatics》  

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

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

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

http://en.wikipedia.org/wiki/Regular_expression

http://docs.python.org/library/re.html

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

import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if re.search('From:', line):
print(line) 

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

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

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

import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if re.search('^From:', line)
print(line) 

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

注:原文给的代码是2.7版,因为我自己使用的是3.4版,所以将print line 修改为 print(line)。

相关阅读:

Python for Informatics 第11章 正则表达式(一)

Python for Informatics 第11章之正则表达式(二)

Python for Informatics 第11章之正则表达式(四)

关于Python for Informatics 第11章 正则表达式(一)的相关内容就给大家介绍这么多,后续还会持续更新,更多精彩内容敬请关注!

相关文章

Python实现深度遍历和广度遍历的方法

深度遍历: 原则:从上到下,从左到右 逻辑(本质用递归): 1)、找根节点 2)、找根节点的左边 3)、找根节点的右边 class Node(object): def __init...

Python函数中不定长参数的写法

Python函数中不定长参数的写法

1、不定长参数的写法,用 *变量名 表示 2、不定长参数累加 3、不定长参数,使用**c接受m=23,n=56的值; 传参时,a必写,b、c可以缺省 def fun(a, b,...

python对数组进行反转的方法

本文实例讲述了python对数组进行反转的方法。分享给大家供大家参考。具体实现方法如下: arr = [1,2,3] arr.reverse() print(arr) 输出:...

python3.5 cv2 获取视频特定帧生成jpg图片

python3.5 cv2 获取视频特定帧生成jpg图片

假如文件夹有大量视频文件,需求目标是想从每个视频中提取一帧作为视频的一个封面图片,本文利用opencv-python模块实现需求。结合自己的工作,做一下简单的记录,原本想生成可传参数的e...

Python数据类型之Dict字典实例详解

本文实例讲述了Python数据类型之Dict字典。分享给大家供大家参考,具体如下: dict字典 1.概述 dict也是一种存储方式,类似于list和tuple,但是,字典采用键—值(k...