python核心編程學(xué)習(xí)筆記_第1頁
python核心編程學(xué)習(xí)筆記_第2頁
python核心編程學(xué)習(xí)筆記_第3頁
python核心編程學(xué)習(xí)筆記_第4頁
python核心編程學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python核心編程學(xué)習(xí)筆記之chapter15這一章蠻重要,代碼都敲進(jìn)去試過,請批評指正。方便起見,程序?qū)懺趐y文獻(xiàn)中。1.

辨認(rèn)下列字符串:“bat,”“bit,”“but,”“hat,”“hit,”或“hut”

#!/usr/bin/envpythonimportrepattern='[bh][aiu]t'm='bkibit'n=re.search(pattern,m)ifnisnotNone:printn.group()Ps:還可以findall函數(shù)2.匹配用一個空格分隔的任意一對單詞,比如,名和姓

pattern='[A-Za-z]+\[A-Za-z]+'3.匹配用一個逗號和一個空格分開的一個單詞和一個字母。例如,英文人名中的姓和名

的首字母

pattern='[A-Za-z]+\.\[A-Za-z]'4.

匹配所有合法的Python標(biāo)記符pattern='[\w]+'Ps:不是非常完美,&算不算?5.請根據(jù)您(讀者)本地關(guān)于地址的格式寫法匹配一個街道地址(你寫出的正則表達(dá)式要

盡也許通用以匹配任意數(shù)目的表達(dá)街道名字的單詞,

涉及類型指示)。比如,美國的街道地址使用這

樣的格式:1180BordeauxDrive.

使你寫的正則表達(dá)式盡也許通用,規(guī)定可以匹配多個單詞的街道

名字,

如:3120DelaCruzBoulevard.

pattern='[\d]+\[A-Za-z\]+'Ps:1180BordeauxDriveofNewYork呢?

6.匹配簡樸的以“www.”開頭,以“.com”作結(jié)尾的Web域名,例如:.com.附

加題:使你寫的正則表達(dá)式還支持其他頂級域名:.edu,.net等,比如:.edu.

pattern='w{3}\.[\w]+\.[\w]+'Ps:seach與match的差別?7.匹配全體Python整數(shù)的字符串表達(dá)形式的集合

pattern='\d+'8.

匹配全體Python長整數(shù)的字符串表達(dá)形式的集合pattern='\d+[L]?'9.

匹配全體Python浮點(diǎn)數(shù)的字符串表達(dá)形式的集合pattern='\d+\.\d*'10.匹配全體Python復(fù)數(shù)的字符串表達(dá)形式的集合

pattern='\d*\.?\d*\+\d*\.?\d*j'匹配所有合法的電子郵件地址(先寫出一個限制比較寬松的正則表達(dá)式,然后盡也許加

強(qiáng)限制條件,但要保證功能的對的性)。

pattern='\w+\@\w+\.\w+'12.匹配所有合法的Web網(wǎng)站地址(URLs)(先寫出一個限制比較寬松的正則表達(dá)式,然后盡也許加強(qiáng)限制條件,但要保證功能的對的性)。pattern='www\.\w+\.\w+'13.type().type()內(nèi)建函數(shù)返回一個對象類型,此對象顯示為Python的字符串形式,

如下所示:

>>>type(0)

<type'int'>

>>>type(.34)

<type'float'>

>>>type(dir)

<type'builtin_function_or_method'>

請寫一個正則表達(dá)式,能從這個字符串中提取出類型的名字。你的函數(shù)能實(shí)現(xiàn)以下功能:如

果以字符串“<type'int'>”做輸入,會返回類型“int”.(返回其他類型也同理,如,返回類型‘float’,

‘builtin_function_or_method’等)提醒:對的的結(jié)果保存在類和某些內(nèi)建類型的__name__屬性

里。

pattern='<type\\'(\w+)\'>'n=re.search(pattern,"<type'float'>")ifnisnotNone:printn.group(1)14.正則表達(dá)式。在15.2小節(jié)里,我們給出一個匹配由一位或兩位數(shù)字代表一月到九月的

字符串形式(“0?[1-9]”)。請寫出一個正則表達(dá)式

表達(dá)標(biāo)準(zhǔn)日歷上其它的三個月(十月、十一月、

十二月)。

pattern='1[0-2]'15.正則表達(dá)式。在15.2小節(jié)里,我們給出一個匹配信用卡卡號的模式:(“[0-9]{15,16}”).

但這個模式不允許用連字符號分割信用卡卡號中的數(shù)字。請寫出一個允許使用連字符的正則表達(dá)式,

但規(guī)定連字符必須出現(xiàn)在對的的位置。例如,15位的信用卡卡號的格式是4-6-5,表達(dá)四個數(shù)字,一

個連字符,后面接六個數(shù)字、一個連字符,最后是五個數(shù)字。16位的信用卡卡號的格式是4-4-4-4,

數(shù)位局限性時,添0補(bǔ)位。'([0-9]{4}\-?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}?)|\([0-9]{4}\-?[0-9]{6}\-?[0-9]{5})'ps:基于此思緒還可以寫出限制更寬松或更嚴(yán)格的條件,這里的問號我認(rèn)為是出現(xiàn)一次或零次的意思,后來證實(shí)并非如此,但這個表達(dá)式是可行的16.修改腳本gendata.py的代碼,使數(shù)據(jù)直接寫入文獻(xiàn)redata.txt中,而不是輸出到屏

幕上。

#!/usr/bin/envpythonfromrandomimportrandint,choicefromstringimportlowercasefromsysimportmaxintfromtimeimportctimedoms=('com','edu','net','org','gov')t=''foriinrange(randint(5,10)):dtint=randint(0,maxint-1)#pickdatedtstr=ctime(dtint)#datestringshorter=randint(4,7)#loginshorterem=''forjinrange(shorter):#generateloginem+=choice(lowercase)longer=randint(shorter,12)#createdomaindn=''forjinrange(longer):dn+=choice(lowercase)t+='%s::%s@%s.%s::%d-%d-%d\n'%(dtstr,em,dn,choice(doms),dtint,shorter,longer)f=open('C:/python27/redata.txt','a')f.write(t)f.close()17.記錄生成的redata.txt文獻(xiàn)中,星期中的每一天出現(xiàn)的次數(shù)(或記錄各月份出現(xiàn)的次

數(shù))。#!/usr/bin/envpythonimportrem=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']foriinrange(len(m)):x=[]pattern=m[i]f=open('C:/python27/redata.txt','r')foreachLineinf.readlines():n=re.search(pattern,eachLine)ifnisnotNone:x+=[n.group()]print'%sappears%dtimes'%(m[i],len(x))18.通過檢查每個輸出行中整數(shù)字段部分的第一個整數(shù)是否和該行開頭的時間戳相匹配來

驗證redata.txt中的數(shù)據(jù)是否完好

#!/usr/bin/envpythonimportrefromtimeimportctimepattern='\:\:(\d+)'f=open('C:/python27/redata.txt','r')j=0foreachLineinf.readlines():n=re.search(pattern,eachLine)pattern1='[A-Z][a-z]{2}\[A-Z][a-z]{2}\\d+\\d+\:\d+\:\d+\\d+'m=re.search(pattern1,eachLine).group()str(m)ifnisnotNone:k=ctime(int(n.group(1)))str(k)ifm==k:passelse:j+=1print'the%dthlineisnotcomplete'%jifj==0:print'thetxtiscomplete'19.

提取出每行中完整的時間戳字段pattern='[A-Z][a-z]{2}\[A-Z][a-z]{2}\\d+\\d+\:\d+\:\d+\\d+'20.提取出每行中完整的電子郵件地址。(與前面的題考察內(nèi)容相同,所以可以按自己喜好來做,嘗試不同的思緒)pattern='\:\:(.+?)\:\:'21.只提取出時間戳字段中的月份。pattern='(\w{3})\\d{2}'22.只提取出時間戳字段中的年份

pattern='[1-2]\d{3}'23.只提取出時間戳字段中的值(格式:HH:MM:SS)。pattern='\d{2}\:\d{2}\:\d{2}'24.只從電子郵件地址中提取出登錄名和域名(涉及主域名和頂級域名,兩者連在一起)pattern='\w+\@\w+\.\w{3}'25.只從電子郵件地址中提取出登錄名和域名(涉及主域名和頂級域名,兩者分別提取)。pattern='(\w+)\@(\w+\.\w{3})'26.

將每行中的電子郵件地址替換為你自己的電子郵件地址n=re.sub(pattern,'',eachLine)27.提取出時間戳中的月、日、年,并按照格式“月日,年”顯示出來,且每行僅遍

歷一次#!/usr/bin/envpythonimportref=open('C:/python27/redata.txt','r')pattern='(\w{3}\\d{2}).+?(\d{4})\:'foreachLineinf.readlines():n=re.search(pattern,eachLine)printn.group(1),',',n.group(2)28.區(qū)號(第一組的三個數(shù)字和它后面的連字符)是可選的,即,你寫的正則表達(dá)式對

800-5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論