Python核心编程——Chapter15
正则表达式在脚本语言里是最重要的一部分,这部分的题目真的不容怠慢。
开始这部分的题目的解答!
15.1识别下列字符串:bat,bit,but,hat,hit和hut。
>>> import re
>>> pattern='[bh][aiu]t'
>>> word='batsasasasa'
>>> m=re.search(pattern,word)
>>> if m is not None:
... m.group()
...
'bat'
15.2.匹配用一个空格分隔的任意一对单词,比如名和性。
pattern='[A-Za-z][a-z]+ [A-Za-z][a-z]'
15.3.匹配用一个逗号和一个空格分开的一个单词和一个字母。
>>> import re
>>> pattern='([A-Z]\.)+ ?[A-Z][a-z]+'
>>> s1='J.R. Smith'
>>> s2='J.R.Smith'
>>> s3='T. Ford'
>>> re.match(pattern,s1).group()
'J.R. Smith'
>>> re.match(pattern,s2).group()
'J.R.Smith'
>>> re.match(pattern,s3).group()
'T. Ford'
15.4.匹配所有合法的Python标识符
所谓合法的Python标识符:首字母只能是下划线或字母,然后之后的字符可以是字母,数字或下划线。
>>> pattern='[a-zA-Z_][\w_]+'
15.5.匹配美国的街道名字地址,如:1180 Bordeaux Drive ,3120 De la Cruz Boulevard。
>>> patter='\d+ [A-Za-z ]+'
15.6.匹配以“www."开头,以”.com"作结尾的Web域名。
>>> pattern='w{3}[.\w]+.com'
附加题:支持其他顶级域名:
>>> pattern='w{3}[.\w]+'
15.7.匹配全体Python整型的字符串表示形式的集合。
>>> pattern='\d+[Ll]?'
15.8.匹配全体Python长整型字符串表示形式的集合。
>>> pattern='\d+[Ll]'
15.9.匹配全体Python浮点型的字符串表示形式的集合。
>>> pattern='\d+\.\d+'
15.10.匹配全体Python复数的字符串表示形式的集合。
>>> pattern='\d+\.?\d+\+\d+\.?\d+j'
15.11.匹配所有合法的电子邮件地址
>>> pattern='\w+@[\w.]+'
15.13.往type()提取类型的名字
>>> pattern=''
>>> re.match(pattern,"<type 'int'>").group()
"<type 'int'>"
>>> re.match(pattern,"<type 'int'>").group(1)
'int'
15.16.将gendata.py的内容输出到文件当中。
#!/usr/bin/env python from random import randint,choice
from string import lowercase
from sys import maxint
from time import ctime doms = ('com','edu','net','org','gov')
g = open('/home/dzhwen/456.txt','a+') for i in range(randint(5,10)):
dtint = randint(0,maxint-1)
dtstr = ctime(dtint)
shorter = randint(4,7) em =''
for j in range(shorter):
em += choice(lowercase) longer = randint(shorter,12)
dn=''
for j in range(longer):
dn += choice(lowercase) word=dtstr+'::'+em+'@'+dn+'.'+choice(doms)+'::'+str(dtint)+'-'+str(shorter)+'-'+str(longer)+'\n'
g.write(word)
15.19.提取出每行中完整的时间戳字段。
#!/usr/bin/env python
import re
f = open('/home/dzhwen/456.txt','r')
pattern = '(.+?)::.+'
for eachLine in f:
m = re.match(pattern,eachLine)
print m.group(1)
15.20.提取出每行中完整的电子邮件地址。
#!/usr/bin/env python
import re
f = open('/home/dzhwen/456.txt','r')
pattern = '.+::(\w+@\w+.\w+)::.+'
for eachLine in f:
m = re.match(pattern,eachLine)
print m.group(1)
15.21.只提取时间戳字段中的月份。
#!/usr/bin/env python
import re
f = open('/home/dzhwen/456.txt','r')
pattern = '\w{3} (\w{3}).+'
for eachLine in f:
m = re.match(pattern,eachLine)
print m.group(1)
15.22.只提取时间戳字段中的年份。
#!/usr/bin/env python
import re
f = open('/home/dzhwen/456.txt','r')
pattern = '.+?(\d{4}).+'
for eachLine in f:
m = re.match(pattern,eachLine)
print m.group(1)
15.23.只提取出时间戳字段中的时间值。
#!/usr/bin/env python
import re
f = open('/home/dzhwen/456.txt','r')
pattern = '.+(\d{2}:\d{2}:\d{2}).+'
for eachLine in f:
m = re.match(pattern,eachLine)
print m.group(1)
15.25.只从电子邮件地址中提取出登录名和域名。(二者分别提取)
#!/usr/bin/env python
import re
f = open('/home/dzhwen/456.txt','r')
pattern = '.+::(\w+)?@(.+)?::.+'
for eachLine in f:
m = re.match(pattern,eachLine)
print m.group(1),m.group(2)
15.26.将每行中的电子邮件地址替换为你自己的电子邮件地址。
#!/usr/bin/env python
#-*-coding:utf-8-*- import re f = open('/home/dzhwen/456.txt','r') pattern = '.+::(.+)?::.+' for eachLine in f:
m = re.match(pattern,eachLine)
address = raw_input('请输入你自己的电子邮件:')
print re.subn(m.group(1),address,eachLine)
有趣的题目基本只有这些,请多多指教!
Python核心编程——Chapter15的更多相关文章
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python核心编程第二版(中文).pdf 目录整理
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
- python核心编程--笔记(不定时跟新)(转)
的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v ...
- python核心编程笔记(转)
解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v 冗 ...
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- Python核心编程这本书的一些错误
<Python核心编程第二版>这本书比<Python基础教程第二版修订版>详细很多,丰富了很多细节,虽然它是一本经典的入门书,但我发现还是存在一些明显的错误.在面向对象编程这一 ...
- Python核心编程-描述符
python中,什么描述符.描述符就是实现了"__get__"."__set__"或"__delete__" 方法中至少一个的对象.什么是非 ...
- Python核心编程-闭包
百度搜了一下闭包的概念:简而言之,闭包的作用就是在外部函数执行完并返回后,闭包使得收机制不会收回函数所占用的资源,因为内部函数的执行需要依赖外函数中的变量.这是对闭包作用的非常直白的描述,不专业也不严 ...
随机推荐
- 处理Git不能上传大于100M文件问题
记录一下自己工作遇到的问题,免得下次再遇到了还到处网上查资料解决. 自己的项目的版本控制用的是Git,代码仓库在github托管.项目里用到了百度导航SDK,由于百度导航SDK有了新版本,于是就更新到 ...
- 读书笔记-《Java核心技术卷I-基础知识》
1.定时器Timer类 构造定时器时,需要设置一个时间间隔,并告知定时器,当到达时间间隔时需要做什么操作.定时器需要知道调用哪一个方法,并要求传递的对象所属的类实现了java.awt.event包的A ...
- 【刷题】BZOJ 3144 [Hnoi2013]切糕
Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x, ...
- 【CF938G】Shortest Path Queries(线段树分治,并查集,线性基)
[CF938G]Shortest Path Queries(线段树分治,并查集,线性基) 题面 CF 洛谷 题解 吼题啊. 对于每个边,我们用一个\(map\)维护它出现的时间, 发现询问单点,边的出 ...
- 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)
题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...
- 【poj1390】 Blocks
http://poj.org/problem?id=1390 (题目链接) 题意 给出一排方块,每次可以把颜色相同的消掉,获得长度的平方的分数,问最大得分. Solution 蜜汁dp.. 我们把颜色 ...
- HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)
HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析) 题意分析 简单的SG分析 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 //#inclu ...
- Mac显示同一程序的所有窗口
通过F3键可以显示所有程序的所有窗口到桌面,但是如果窗口太多的话显示出来很难看清. 如果只显示某一个程序的所有窗口就不会乱了. 其实在dock上有一个相应的选项,但是没有快捷键. 开启方法: 在终端上 ...
- WEB入门.六 盒子模型
学习内容 CSS盒子模型 盒子之间的关系 页面元素定位 能力目标 理解盒子模型 理解内容与表现分离的优点 理解并掌握盒子之间的关系 理解并掌握绝对定位与相对定位的用法 本章简介 上一章节中已经讲解了页 ...
- JS的强制类型转换
将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况,隐式的情况称为强制类型转换. JavaScript中的强制类型转换总是返回标量基本类型值,如字符串.数字和布尔值,不会返回对象和函数. ...