python核心编程第15章学习笔记_第1页
python核心编程第15章学习笔记_第2页
python核心编程第15章学习笔记_第3页
python核心编程第15章学习笔记_第4页
python核心编程第15章学习笔记_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python核心编程学习笔记之chapter 15这一章蛮重要,代码都敲进去试过,请批评指正。方便起见,程序写在py文件中。1.识别下列字符串:“bat,” “bit,” “but,” “hat,” “hit,” 或 “hut” #!/usr/bin/env pythonimport repattern=bhaiutm=bkibitn=re.search(pattern,m)if n is not None:print n.group()Ps:还可以findall函数2.匹配用一个空格分隔的任意一对单词,比如,名和姓pattern=A-Za-z+ A-Za-z+3. 匹配用一个逗号和一个空格分

2、开的一个单词和一个字母。例如,英文人名中的姓和名的首字母 pattern=A-Za-z+. A-Za-z4.匹配所有合法的Python标识符pattern=w+Ps:不是非常完美,&算不算?5.请根据您(读者)本地关于地址的格式写法匹配一个街道地址(你写出的正则表达式要尽可能通用以匹配任意数目的表示街道名字的单词, 包括类型指示)。比如,美国的街道地址使用这样的格式:1180 Bordeaux Drive. 使你写的正则表达式尽可能通用,要求能够匹配多个单词的街道名字, 如:3120 De la Cruz Boulevard. pattern=d+ A-Za-z +Ps:1180 Bordea

3、ux Drive of New York呢?6.匹配简单的以“www.”开头,以“.com”作结尾的Web域名,例如:.附加题:使你写的正则表达式还支持其他顶级域名:.edu, .net 等,比如:.pattern=w3.w+.w+Ps:seach与match的差别?7.匹配全体Python整数的字符串表示形式的集合pattern=d+8.匹配全体Python长整数的字符串表示形式的集合pattern=d+L?9.匹配全体Python浮点数的字符串表示形式的集合pattern=d+.d*10.匹配全体Python复数的字符串表示形式的集合pat

4、tern=d*.?d*+d*.?d*j11. 匹配所有合法的电子邮件地址(先写出一个限制比较宽松的正则表达式,然后尽可能加强限制条件,但要保证功能的正确性)。pattern=w+w+.w+12.匹配所有合法的 Web 网站地址(URLs)(先写出一个限制比较宽松的正则表达式,然后尽可能加强限制条件,但要保证功能的正确性)。pattern=www.w+.w+13.type(). type()内建函数返回一个对象类型,此对象显示为 Python 的字符串形式, 如下所示: type(0) type(.34) type(dir) 请写一个正则表达式,能从这个字符串中提取出类型的名字。 你的函数能实现

5、以下功能:如果以字符串“”做输入,会返回类型“int”.(返回其他类型也同理,如,返回类型float, builtin_function_or_method等) 提示:正确的结果保存在类和某些内建类型的_name_属性里。 pattern=n=re.search(pattern,)if n is not None: print n.group(1)14.正则表达式。在 15.2 小节里,我们给出一个匹配由一位或两位数字代表一月到九月的字符串形式(“0?1-9”)。 请写出一个正则表达式 表示标准日历上其它的三个月(十月、十一月、十二月)。 pattern=10-215.正则表达式。在15.2小

6、节里,我们给出一个匹配信用卡卡号的模式:(“0-915,16”). 但这个模式不允许用连字符号分割信用卡卡号中的数字。请写出一个允许使用连字符的正则表达式,但要求连字符必须出现在正确的位置。例如,15位的信用卡卡号的格式是4-6-5,表示四个数字,一个连字符,后面接六个数字、一个连字符,最后是五个数字。16位的信用卡卡号的格式是4-4-4-4,数位不足时,添0补位。(0-94-?0-94-?0-94-?0-94?)|(0-94-?0-96-?0-95)ps:基于此思路还可以写出限制更宽松或更严格的条件,这里的问号我以为是出现一次或零次的意思,后来证实并非如此,但这个表达式是可行的16.修改脚本

7、 gendata.py 的代码,使数据直接写入文件 redata.txt 中,而不是输出到屏幕上。 #!/usr/bin/env pythonfrom random import randint,choicefrom string import lowercasefrom sys import maxintfrom time import ctimedoms=(com,edu,net,org,gov)t=for i in range(randint(5,10): dtint=randint(0,maxint-1) #pick date dtstr=ctime(dtint) #date stri

8、ng shorter=randint(4,7) #login shorter em= for j in range(shorter): #generate login em +=choice(lowercase) longer=randint(shorter,12) #create domain dn= for j in range(longer): dn+=choice(lowercase) t+=%s:%s%s.%s:%d-%d-%dn%(dtstr,em, dn,choice(doms),dtint,shorter,longer)f=open(C:/python27/redata.txt

9、,a)f.write(t)f.close()17.统计生成的redata.txt文件中,星期中的每一天出现的次数(或统计各月份出现的次数)。#!/usr/bin/env pythonimport rem=Mon,Tue,Wed,Thu,Fri,Sat,Sunfor i in range(len(m): x= pattern=mi f=open(C:/python27/redata.txt,r) for eachLine in f.readlines(): n=re.search(pattern,eachLine) if n is not None: x+=n.group() print %s

10、appears %d times % (mi, len(x)18.通过检查每个输出行中整数字段部分的第一个整数是否和该行开头的时间戳相匹配来验证redata.txt中的数据是否完好 #!/usr/bin/env pythonimport refrom time import ctimepattern=:(d+)f=open(C:/python27/redata.txt,r)j=0for eachLine in f.readlines(): n=re.search(pattern,eachLine) pattern1=A-Za-z2 A-Za-z2 d+ d+:d+:d+ d+ m=re.sea

11、rch(pattern1,eachLine).group() str(m) if n is not None: k=ctime(int(n.group(1) str(k) if m=k: pass else: j+=1 print the %dth line is not complete %j if j=0: print the txt is complete19.提取出每行中完整的时间戳字段pattern=A-Za-z2 A-Za-z2 d+ d+:d+:d+ d+20.提取出每行中完整的电子邮件地址。(与前面的题考查内容相同,所以可以按自己喜好来做,尝试不同的思路)pattern=:(.

12、+?):21.只提取出时间戳字段中的月份。pattern=(w3) d222.只提取出时间戳字段中的年份pattern=1-2d323.只提取出时间戳字段中的值(格式:HH:MM:SS)。pattern=d2:d2:d224.只从电子邮件地址中提取出登录名和域名(包括主域名和顶级域名,二者连在一起)pattern=w+w+.w325.只从电子邮件地址中提取出登录名和域名(包括主域名和顶级域名,二者分别提取)。pattern=(w+)(w+.w3)26.将每行中的电子邮件地址替换为你自己的电子邮件地址n=re.sub(pattern,,eachLine)27.提取出时间戳中的月、日、年,并按照格式“月 日,年”显示出来,且每行仅遍历一次#!/usr/bin/env pythonimport ref=open(C:/python27/redata.txt,r)pattern=(w3 d2).+?(d4):for eachLine in f.readlines(): n=re.search(pattern,eachLine) print n.group(1),n.group(2)28.区号(第一组的三个数字和它后面的连字符)是可选的,即,你写的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论