Python for Informatics 第11章 正则表达式(一)
作者:徘徊在海岛 发布时间:2021-01-27 06:43:43
正则表达式,又称正规表示法、常规表示法(英语: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)。


猜你喜欢
- Selenium一、简介selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样selen
- 1、前言函数也是一个对象,从而可以增加属性,使用句点来表示属性。如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函
- 平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的
- 1.1 ID定位HTML Tag 的 id 属性值是唯一的,故不存在根据 id 定位多个元素的情况。下面以在百度首页搜索框输入文本
- 前言相信大家都应该有所体会,在平时经常会遇到处理 Excel 表格数据的情况,人工处理起来实在是太麻烦了,我们可以使用 Python 来解决
- //香水坏坏 AT 06-07-25 //郁闷的事情总是接连不断,无形的压力来自内心的恐惧 大家在用.net进行数据操作
- 1.安装第三方模块包pip install django-ckeditor2.添加应用INSTALLED_APPS = [ ..
- 1:数据源Hollywood Movie Dataset: 好莱坞2006-2011数据集实验目的: 实现 统计2006-2011的数据综合
- fetchone() 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 Nonefetchall() 返回多个元组,即返回多个
- PayPal支付功能其实一直在更新文档和接口,这里说的是一个简单的支付功能大概流程如下1,在网站的结账页面,设置一个提交到PayPal网站的
- 1. vue打包后font-awesome字体失效解决方案:2. 打包后图片资源失效解决方案:针对html中引用的图片针对css添加的背景中
- 1.登陆网站,开启开发者模式。可以在浏览器中点击右键检查或者F12打开开发者模式。2.点选 NetWork,DOC,然后刷新页面。在 net
- 之前在使用Pandas处理csv文件时,发现如果文件名为中文,则会报错:OSError: Initializing from file fa
- 1.综述又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以
- 1.在查询分析器理启动或停止SQL Agent服务启动:use mastergoxp_cmdshell 'net start SQL
- 1、执行cmd指令,在cmd输出的内容会直接在控制台输出,返回结果为0表示执行成功。2、在调用完shell脚本后,返回一个16位的二进制数,
- 本文实例主要是Python中获取当前运行函数的名称,具体如下。python 具有强大的自省能力,在函数运行时,可以在函数内部获取到当前所在的
- 前言学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线
- php去掉数组的第一个值的两种删除方法:1、使用array_shift()函数删除数组的第一个值,语法“array_sh
- 根据GB11643-1999公民身份证号码是特征组合码,由十七位数字本体码和一位数字校验码组成,排列顺序从左至右依次为:六位数字地址码八位数