《Python程序設(shè)計(jì)》第4章 字符串、元組和字典_第1頁
《Python程序設(shè)計(jì)》第4章 字符串、元組和字典_第2頁
《Python程序設(shè)計(jì)》第4章 字符串、元組和字典_第3頁
《Python程序設(shè)計(jì)》第4章 字符串、元組和字典_第4頁
《Python程序設(shè)計(jì)》第4章 字符串、元組和字典_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

口令:RAPID708第4章

字符串、元組和字典學(xué)習(xí)目標(biāo)掌握字符串格式化的使用。掌握字符串常用方法。掌握使用正則表達(dá)式進(jìn)行數(shù)據(jù)清洗。掌握元組的特性和使用。掌握字典的特性和使用。字符串最開始的字符串編碼是美國標(biāo)準(zhǔn)信息交換碼(ASCII),它采用1個(gè)字節(jié)對(duì)字符進(jìn)行編碼,最多只能表示256個(gè)符號(hào)(10個(gè)數(shù)字、26個(gè)大寫英文字母、26個(gè)小寫英文字母及一些其他符號(hào))。隨著信息技術(shù)的發(fā)展和信息交互的需要,各國的文字都需要進(jìn)行編碼,不同的應(yīng)用領(lǐng)域和場(chǎng)合對(duì)字符串編碼的要求也略有不同,此時(shí)又分別設(shè)計(jì)多種不同的編碼格式,常見的主要有UTF-8、UTF-16、UTF-32、GB2312、GBK、CP936、base64、CP437等,Python3.X默認(rèn)編碼格式是UTF-8。字符串格式化在Python編程中字符串輸入與輸出可以使用字符串格式化的方式進(jìn)行操作。使用格式如下:%[Flags][Width].[Precision]Type說明:“%”:是轉(zhuǎn)換說明符的開始?!癋lags”:(可選項(xiàng))可供選擇的值有:“+”:正數(shù)前加正號(hào),負(fù)數(shù)前加負(fù)號(hào)?!?”:左對(duì)齊?!啊保赫龜?shù)前加空格?!?”:位數(shù)不夠用“0”填充空?!癢idth”:(可選項(xiàng))字段占有寬度?!?Precision”:(可選項(xiàng))精度,小數(shù)點(diǎn)后保留的位數(shù)。“Type”:轉(zhuǎn)換類型(如表4-1所示)。字符串格式化常用格式字符:字符串格式化>>>num=3438>>>buf="%o"%num>>>buf'6556'>>>buf="%X"%num>>>buf'D6E'>>>buf="%f"%num/345>>>buf="%f"%(num/345)>>>buf'9.965217'>>>buf="%e"%(num/345)>>>buf'9.965217e+00'字符串方法字符串常用方法:find()方法>>>str1="HelloPythonIlikeyou">>>str1.find("like")15count()方法>>>str1="HelloWorld,HelloPython.">>>str1.count("Hello")2split()方法>>>str1="1+2+3+4+5+6+7">>>str1.split("+")['1','2','3','4','5','6','7']join()方法>>>str1=["1","2","3","4","5","6","7"]>>>sep="+">>>sep.join(str1)'1+2+3+4+5+6+7'replace()方法>>>str1="Hello,Python!">>>str1.replace("Python","World")'Hello,World!'strip()方法>>>str1="HelloWorld" #刪除空格>>>str1.split()['Hello','World']>>>str1.split("H") #刪除指定字符“H”['','elloWorld']正則表達(dá)式正則表達(dá)式是字符串處理的有力技術(shù),通常被用來檢索、替換那些符合某個(gè)規(guī)則的文本等,例如,網(wǎng)絡(luò)爬蟲、文稿整理或數(shù)據(jù)篩選等。在Python中提供了“re”模塊來支持正則表達(dá)式。正則表達(dá)式在匹配文本內(nèi)容時(shí)有兩種匹配模式。一種是貪婪模式,盡可能的匹配更多的內(nèi)容,另一種是非貪婪模式,總是嘗試匹配盡可能少的字符。例如,使用正則表達(dá)式“adc*?”如果用于查找“abcdefg”,使用貪婪模式有可能將找到“abcdefghi”,而使用非貪婪模式查找就有可能找到“abcd”。Python中數(shù)量詞默認(rèn)使用貪婪模式。正則表達(dá)式正則表達(dá)式常用語法:格式字符說明.除換行符以外的任意單個(gè)字符\w匹配單詞字符,即[a-zA-Z0-9]\W匹配非單詞字符集,例如‘*’\d匹配數(shù)字,即[0-9]\D匹配非數(shù)字\s匹配空白字符\S匹配非空白字符*匹配前一個(gè)字符0次或者任意多次+匹配前一個(gè)字符1次或者任意多次?匹配前一個(gè)字符0次或者1次{m}匹配前一個(gè)字符m次{m,n}匹配前一個(gè)字符最少m次,最多n次*?非貪婪模式匹配前一個(gè)字符0次或者任意多次+?非貪婪模式匹配前一個(gè)字符1次或者任意多次??非貪婪模式匹配前一個(gè)字符0次或者1次{m,n}?非貪婪模式匹配前一個(gè)字符最少m次,最多n次^匹配字符串開頭$匹配字符串結(jié)尾\A制定的字符串匹配必須出現(xiàn)在開頭\Z制定的字符串匹配必須出現(xiàn)在結(jié)尾|匹配左右任意一個(gè)表達(dá)式,相當(dāng)于“或”的含義()匹配一個(gè)分組,括號(hào)中為該分組所需匹配的內(nèi)容\<number>引用匹配編號(hào)為<number>的分組中的字符串(?P<group_name>)為匹配分組制定特定的組名(?P=<group_name>)引用特定組名的匹配字符串正則表達(dá)式“re”模塊的常用方法:方法功能說明compile(pattern[,flags])創(chuàng)建模式對(duì)象escape(string)將字符串中所有特殊正則表達(dá)式字符轉(zhuǎn)義findall(pattern,string[,flags])返回包含字符串中所有與給定模式匹配的項(xiàng)的列表finditer(pattern,string,flags=0)返回包含所有匹配項(xiàng)的迭代對(duì)象,其中每個(gè)匹配項(xiàng)都是match對(duì)象fullmatch(pattern,string,flags=0)嘗試把模式作用于整個(gè)字符串,返回match對(duì)象或Nonematch(pattern,string[,flags])從字符串的開始處匹配模式,返回match對(duì)象或Nonepurge()清空正則表達(dá)式緩存search(pattern,string[,flags])在整個(gè)字符串中尋找模式,返回match對(duì)象或Nonesplit(pattern,string[,maxsplit=0])根據(jù)模式匹配項(xiàng)分隔字符串sub(pat,repl,string[,count=0])將字符串中所有與pat匹配的項(xiàng)用repl替換,返回新字符串,repl可以是字符串或返回字符串的可調(diào)用對(duì)象,該可調(diào)用對(duì)象作用于每個(gè)匹配的match對(duì)象subn(pat,repl,string[,count=0])將字符串中所有pat的匹配項(xiàng)用repl替換,返回包含新字符串和替換次數(shù)的二元元組,repl可以是字符串或返回字符串的可調(diào)用對(duì)象,該可調(diào)用對(duì)象作用于每個(gè)匹配的match對(duì)象正則表達(dá)式match()方法匹配:importre#將正則表達(dá)式編譯成pattern對(duì)象pattern=pile(r'Hello')#使用Pattern匹配文本,獲得匹配結(jié)果,無法匹配時(shí)將返回Nonematch=pattern.match('HelloPython')#判斷是否匹配到信息ifmatch: #使用Match獲得分組信息print(match.group())正則表達(dá)式match()方法匹配:importre#使用正則表達(dá)式匹配文本,獲得匹配結(jié)果,無法匹配時(shí)將返回Nonematch=re.match(r'(.*)Python','HelloPython',re.S)#判斷是否匹配到信息ifmatch: #使用Match獲得分組信息print(match.group())#輸出符合匹配要求的所有匹配項(xiàng)print(match.group(1))#輸出符合匹配要求的特定項(xiàng)正則表達(dá)式search()方法匹配:importre#使用正則表達(dá)式匹配文本,獲得匹配結(jié)果,無法匹配時(shí)將返回Nonematch1=re.search(r'is(.*)learn','Lifeistooshort,IlearnPython',re.S)match2=re.match(r'is(.*)learn','Lifeistooshort,IlearnPython',re.S)#判斷是否匹配到信息ifmatch1: print(match1.group())#輸出符合匹配要求的所有匹配項(xiàng)print(match1.group(1))#輸出符合匹配要求的特定項(xiàng)else:print("match1None!")ifmatch2: print(match2.group())#輸出符合匹配要求的所有匹配項(xiàng)print(match2.group(1))#輸出符合匹配要求的特定項(xiàng)else:print("match2None!")正則表達(dá)式findall()方法匹配:importrenum=re.findall(r'\d','one1two2three3four4')print(num)正則表達(dá)式sub()方法匹配:importrephone="2018-01-01-9527#ThisisPhoneNumber"#將‘#’號(hào)以后的數(shù)據(jù)用''替換num=re.sub(r'#.*$',"",phone)print("PhoneNum:",num)#將所有的非數(shù)字?jǐn)?shù)據(jù)用''替換num=re.sub(r'\D',"",phone)print("PhoneNum:",num)元組元組和列表操作類似,但是元組屬于不可變序列,元組創(chuàng)建后只可以元素覆蓋不可以修改元素。元組的定義方式和列表相同,但定義時(shí)所有元素是放在一對(duì)圓括號(hào)“()”中,用逗號(hào)“,”分隔元素值。>>>1,2,3(1,2,3)>>>(1,2,3)(1,2,3)#只有一個(gè)值的元組操作>>>55>>>(5)5>>>5,(5,)>>>(5,)(5,)>>>tuple("123")('1','2','3')>>>tuple([1,2,3])(1,2,3)>>>x=1,2,3,4>>>x[:3](1,2,3)>>>x[2]3字典字典的基本操作:創(chuàng)建字典>>>name_id={"Liang":"0001","Ran":"0002","Jie":"0003"}dict()函數(shù)>>>students=dict(name="jie",age=23)>>>students{'name':'jie','age':23}>>>students=[("name","jie"),("age",23)]>>>dict(students){'name':'jie','age':23}讀取字典某個(gè)元素>>>students=[("name","jie"),("age",23)]>>>dict(students){'name':'jie','age':23}>>>students['name']'jie'讀取所有的鍵值對(duì)列表>>>students=dict(name="jie",age=23)>>>foriteminstudents.items(): print(item)('name','jie')('age',23)添加和修改字典元素>>>students=dict(name="jie",age=23)>>>students["id"]=9527>>>students{'id':9527,'name':'jie','age':23}>>>students["age"]=30>>>students{'id':9527,'name':'jie','age':30}字典是可變序列是一種映射類型,字典中的鍵可以為任意不可變數(shù)據(jù),比如整數(shù)、實(shí)數(shù)、復(fù)數(shù)、字符串、元組等。字典字典常用方法:clear()方法>>>students={"id":9527,"name":"jie","age":23}>>>students{'id':9527,'name':'jie','age':23}>>>students.clear()>>>students{}copy()方法>>>students1={"id":9527,"name":"jie","age

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論