Python for Informatics 第11章 正则表达式六(译)
注:文章原文为Dr. Charles Severance 的 《Python for Informatics》。文中代码用3.4版改写,并在本机测试通过。
11.7 调试
Python有一些简单和基本的内置文档,当你想快速复习触发你记忆的特定方法,这将非常有用。这个文档可以通过Python解释器在互动模式下查看。
你可以使用help()命令带出互动的帮助系统
>>> help()
Welcome to Python 3.4's help utility!
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/3.4/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit".
To get a list of available modules, keywords, symbols, or topics, type
"modules", "keywords", "symbols", or "topics". Each module also comes
with a one-line summary of what it does; to list the modules whose name
or summary contain a given string such as "spam", type "modules spam".
help> modules
帮助系统下键入modules命令,帮助系统将显示所有可用的模块。
如果你知道你想使用的模块名,你可以使用dir()命令显示模块中的方法(注意要退出帮助系统)
>>>import re
>>>dir(re)
['A', 'ASCII', 'DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'Scanner', 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_alphanum_bytes', '_alphanum_str', '_cache', '_cache_repl', '_compile', '_compile_repl', '_expand', '_pattern_type', '_pickle', '_subx', 'compile', 'copyreg', 'error', 'escape', 'findall', 'finditer', 'fullmatch', 'match', 'purge', 'search', 'split', 'sre_compile', 'sre_parse', 'sub', 'subn', 'sys', 'template']
你同样可以用help命令得到关于特定方法的少量文档
>>> help (re.search)
Help on function search in module re:
search(pattern, string, flags=0)
Scan through string looking for a match to the pattern, returning
a match object, or None if no match was found.
>>>
这个内置的文档不是非常广泛,但当你不想访问网页或搜索引擎而快速获取帮助时,它将非常有用。
11.8 词汇表
脆弱代码(brittle code):在输入数据是一种特殊格式时可以运行,但是当输入的数据和正确格式有一些差异时容易失效的代码。
贪婪匹配(greedy matching):正则表达式中"+"和"*"匹配扩展到最大可能的字符串。
grep: 在绝大多数Unix系统中可用的命令,用来搜索整个文本文件,找出匹配正则表达式的行。它的名字代表通用正则表达式分析器。
正则表达式:一个表达更加复杂查询字符串的语言。可能包含特殊字符表示只匹配查找位于行的开头或结尾,以及其他相似功能。
通配符:可以匹配任意字符的特殊字符。在正则表达式中这个通配符是"."。
11.9 练习
练习11.1 编写一段程序模拟Unix系统中的grep命令。要求用户输入一个正则表达式,然后输出在mbox.txt文件中符合这个表达式的行数。
$ python grep.py
Enter a regular expression: ˆAuthor
mbox.txt had 1798 lines that matched ˆAuthor
$ python grep.py
Enter a regular expression: ˆXmbox.
txt had 14368 lines that matched ˆX-
$ python grep.py
Enter a regular expression: java$
mbox.txt had 4218 lines that matched java$
参考代码如下:
import re
input_re = input('Enter a regular expression:')
hand = open('mbox.txt')
count = 0
for line in hand:
if re.search(input_re,line):
count = count + 1
print('mbox.txt had ' + str(count) + ' that matched ' + input_re)
练习11.2 编写一个程序查找以下格式的行,然后用findall()方法抽取每行中的数字,计算它们的平均值并输出。
New Revision: 39772
Enter file:mbox.txt
38549.7949721
Enter file:mbox-short.txt
39756.9259259
参考代码如下:
import re
filename = input('Enter file:')
hand = open(filename)
count = 0
total = 0
for line in hand:
x = re.findall('New Revision: ([0-9]+)',line)
if len(x) > 0:
count = count + 1
total = total + int(x[0])
print(total/count)
Python for Informatics 第11章 正则表达式六(译)的更多相关文章
- Python for Informatics 第11章 正则表达式五(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.4 转义字符 之前我们在正 ...
- Python for Informatics 第11章 正则表达式四(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.3 组合查询和抽取 如果我 ...
- Python for Informatics 第11章 正则表达式三(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.2 用正则表达式抽取数据 ...
- Python for Informatics 第11章 正则表达式二(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.1 正则表达式的字符匹配 ...
- Python for Informatics 第11章 正则表达式一(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 目前为止,我们一直在通读文件,查 ...
- 《python基础教程(第二版)》学习笔记 文件和素材(第11章)
<python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...
- 《Python学习手册 第五版》 -第11章 赋值、表达式和打印
上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...
- Python for Infomatics 第12章 网络编程六(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.9 词汇表 Beautif ...
- [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题
---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...
随机推荐
- 英文写作——冠词的使用(Use 0f Articles)
1.使用'a','an','the'和不使用冠词的基本规则: <1>泛指,不可数名词不能有任何冠词 <2>泛指,可数,复数名词前不能有冠词 <3>泛指,可数,单数名 ...
- Debian 8中dpkg -i自动解决依赖关系
dpkg -i 后#apt-get update &&apt-get -f install
- Android检测网络是否正常代码!
在Android开发中,如果该应用程序需要连接网络请求,那么最好我们先做一个检测网络是否在线的判断,否则程序容易出现卡死或FC等Bug,应该判断如果手机离线则弹出提示让用户检查网络,如果正常则继续执行 ...
- 解决 PhpStorm 对 用单例模式实例化PHP类时,代码自动提示功能失效 的问题
大部分PHP框架中,为了防止一个类被重复实例化,往往采用“单例模式”实例化类.我们的项目框架是这样做的: 先写好一个基类 /framework/Base.class.php,内容如下: <?ph ...
- 【转】4G内存下MySQL修改配置文件以优化效率(来自discuz)
摘要:公司网站访问量越来越大,MySQL自然成为瓶颈,因此最近我一直在研究 MySQL 的优化,第一步自然想到的是 MySQL 系统参数的优化,作为一个访问量很大的网站(日20万人次以上)的数据库. ...
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...
- mongDB-- 3. 查询操作
1. 准备工作 (1)启动mongo 进入mongo安装目录的bin/ 目录 , ./mongod (2)启动mongo客户端 ./mongo (3) 查看所有库 show dbs; (4) 切换到l ...
- DAY6 使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单
设置防火墙策略时,关于SSH:22访问权限,我们常常会设置服务器只接受某个固定IP(如公司IP)访问,但是当我们出差或在家情况需要登录服务器怎么办呢? 常用两种解决方案:1.通过VPN操作登录主机: ...
- MQTT(二)推送
MQTT V3.1----publish解读 - leeying - 博客园 http://www.cnblogs.com/leeying/p/3791341.html MQTT - 聂永的博客 - ...
- loadrunner11录制无法打开IE浏览器
安装loadrunner折腾了很久,后来发现是ghost系统问题.重装了系统,再重装了自己需要用的工具~ 接着学习loadrunner,一边看帮助文档一遍学.可是为嘛按照帮助文档的步骤来,就是会碰到一 ...