Python第六章字符串_第1頁
Python第六章字符串_第2頁
Python第六章字符串_第3頁
Python第六章字符串_第4頁
Python第六章字符串_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2024/6/21Python語言編程導(dǎo)論第六章字符串內(nèi)容提要概述通用序列操作字符串格式化字符串方法正那么表達(dá)式簡介2024/6/22一、概述在Python中,字符串是除數(shù)字外最重要的數(shù)據(jù)類型。字符串無處不在:將字符串輸出到屏幕上;從用戶的鍵盤輸入讀取字符串;文件通常被視為大型字符串;網(wǎng)頁大局部是由文本組成的。字符串是一種聚合數(shù)據(jù)結(jié)構(gòu),可充分利用索引和切片—用于從字符串中提取子串。而Python正那么表達(dá)式庫,是一種用來處理字符串的微型語言,但功能強(qiáng)大。2024/6/23二、通用序列操作Python中,字符串、列表和元組都屬于序列。序列有一些通用的操作。包括:索引〔indexing〕、分片〔slicing〕、加〔adding〕、乘〔multiplying〕、檢查某個元素是否屬于序列的成員〔成員資格〕、計算序列長度、找出最大元素和最小元素等。2024/6/241、索引序列中的所有元素都是有編號的—從0開始遞增。這些元素可以通過編號分別訪問。索引有正索引和負(fù)索引,可根據(jù)實(shí)際情況選用。字符串就是一個由字符組成的序列,處理字符串時,經(jīng)常需要訪問其中的各個字符。索引0指向第1個字符。2024/6/25例如:字符串’apple’的正索引和負(fù)索引2024/6/26例6-1:字符串索引應(yīng)用2024/6/27執(zhí)行結(jié)果:例6-2:計算給定字符串的編碼總和2024/6/28執(zhí)行結(jié)果:2、分片與使用索引訪問單個元素類似,可以使用分片操作來訪問一定范圍內(nèi)的元素。分片是實(shí)際應(yīng)用中經(jīng)常使用的技術(shù),被截取的局部稱為“子串”Python3支持的分片格式為:S[i:j:k]表示:索引S對象中的元素,從索引為i直到索引為j-1,每隔k個元素索引一次,第三個限制k為步長,默認(rèn)為1,也可以使用負(fù)數(shù)作為步長,步長-1表示分片將會從右至左進(jìn)行而不是通常的從左至右,實(shí)際效果主是將序列反轉(zhuǎn)。在Python中,還可以使用split()函數(shù)來截取字符串。2024/6/29例6-3:字符串分片2024/6/210執(zhí)行結(jié)果:例6-4:返回文件名中的擴(kuò)展名2024/6/211執(zhí)行結(jié)果:2024/6/2123、序列相加〔字符串連接、合并〕之前介紹過,使用“+”完成。除此之外,還可以使用join函數(shù)和reduce函數(shù)實(shí)現(xiàn)字符串的合并。注意:不同類型的數(shù)據(jù)不能相加。如:4、乘法用數(shù)字x乘以一個序列會生成新的序列,在新的序列中,原來的序列被重復(fù)x次。如:5、成員資格為了檢查一個值是否在序列中,可以使用in運(yùn)算符。該運(yùn)算符檢查某個條件是否為真,假設(shè)為真返回True,否那么返回False。例如:2024/6/2136、長度、最小值和最大值len、min和max都是內(nèi)置函數(shù)。len—返回序列中包含的元素個數(shù)。min—返回序列中的最小值。max—返回序列中的最大值。例如:2024/6/214課堂練習(xí)一:課堂練習(xí)一2024/6/215三、字符串格式化1、字符串格式化C語言使用函數(shù)printf()格式化輸出結(jié)果,Python也提供了類似功能。Python將假設(shè)干值插入帶有“%”標(biāo)記的字符串中,從而可以按照指定格式輸出字符串。語法:"%s"%str1"%s%s"%(str1,str2)2024/6/216例6-5:格式化字符串2024/6/217執(zhí)行結(jié)果:例6-6:帶精度的格式化2024/6/218執(zhí)行結(jié)果:Python格式化字符串的替代符及含義:符號描述符號描述%c格式化字符及其ASCII碼%f格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度%s格式化字符串%e用科學(xué)計數(shù)法格式化浮點(diǎn)數(shù)%d格式化整數(shù)%E作用同%e%u格式化無符號整數(shù)%g根據(jù)值的大小決定使用%f或%e%o格式化無符號八進(jìn)制數(shù)%G作用同%g%x格式化無符號十六進(jìn)制數(shù)%p用十六進(jìn)制數(shù)格式化變量的地址%X格式化無符號十六進(jìn)制數(shù)(大寫)%%若在字符串中輸出“%”,需要使用“%%”2024/6/219例6-7:符號、對齊和用0填充在字段寬度和精度之間還可以放置一個“標(biāo)志”,該標(biāo)志可以是零、加號、減號或空格。零表示數(shù)字將會用0填充。2024/6/220執(zhí)行結(jié)果:2、字符串的轉(zhuǎn)義字符計算機(jī)中存在可見字符與不可見字符??梢娮址告I盤上的字母、數(shù)字和符號。不可見字符是指換行、回車、制表符等字符。對于不可見字符,Python使用的方法類似于C語言,都是使用“\”作為轉(zhuǎn)義字符。Python還提供了函數(shù)strip()、lstrip()、rstrip()去除字符串中的轉(zhuǎn)義字符。2024/6/221Python常用的轉(zhuǎn)義字符及其含義:符號描述符號描述\\反斜線\v縱向制表符\’單引號\r回車符\”雙引號\f換頁符\a發(fā)出系統(tǒng)響鈴聲\o八進(jìn)制數(shù)代表的字符\b退格符\x十六進(jìn)制數(shù)代表的字符\n換行符\000終止符,其后的字符串全部忽略\t橫向制表符2024/6/222例6-8:轉(zhuǎn)義字符應(yīng)用2024/6/223執(zhí)行結(jié)果:四、字符串函數(shù)〔方法〕Python字符串自帶了大量很有用的函數(shù),要查看這些函數(shù),可調(diào)用dir并將參數(shù)指定為任何字符串〔如:dir('')〕。雖無必要準(zhǔn)確記住所有函數(shù)功能,但最好有個大致了解,這樣有益于需要時去查詢具體使用。字符串函數(shù)的詳細(xì)介紹可參閱其文檔字符串或Python在線文檔〔〕。此處介紹常用的字符串函數(shù)。2024/6/2241、測試函數(shù)用于檢測字符串是否為特定格式的函數(shù),它們組成了一個最大的字符串函數(shù)組。測試函數(shù)都返回True或False,因此也稱為布爾函數(shù)或謂詞。2024/6/225字符串測試函數(shù):函數(shù)名何時返回True函數(shù)名何時返回Trues.endswith(t)s以字符串t結(jié)尾s.islower()s只包含小寫字母s.startswith(t)s以字符串t打頭s.isnumeric()s只包含數(shù)字s.isalnum()s只包含字母和數(shù)字s.isprintable()s只包含可打印字符s.isalpha()s只包含字母s.isspace()s只包含空白字符s.isdecimal()s只包含表示十進(jìn)制數(shù)字的字符s.istitle()s是個大小寫符合標(biāo)題要求的字符串s.isdigit()s只包含數(shù)字字符s.isupper()s只包含大寫字母s.isidentifier()s是合法的標(biāo)識符tinss包含字符串t2024/6/226例如:2024/6/2272、字符串的查找函數(shù)函數(shù)名返回值s.find(t)若未找到字符串t,則返回-1;否則返回t在s中的起始位置s.rfind(t)與find相同,但從右往左查找s.index(t)與find相同,但如果在s中找不到t,則引發(fā)ValueError異常s.rindex(t)與index相同,但從右往左查找2024/6/228說明:函數(shù)index和find之間的差異在于沒有找到指定子串的情形。函數(shù)index引發(fā)異常ValueError,而函數(shù)find將返回-1。例6-9:查找函數(shù)應(yīng)用2024/6/229執(zhí)行結(jié)果:3、字符串的替換函數(shù)函數(shù)名返回的字符串s.replace(old,new)將s中的每個old替換為news.expandtabs(n)將s中的每個制表符擴(kuò)展為空格,空格寬度為n2024/6/230Python字符串自帶了兩個替換函數(shù),如下表所示。注意:使用替換函數(shù)可輕松地刪除字符串中的子串。例6-10:字符串替換2024/6/231執(zhí)行結(jié)果:4、字符串的合并之前介紹過,Python可使用“+”連接不同的字符串。除此之外,還可以使用join函數(shù)〔是split方法的逆方法〕和reduce函數(shù)實(shí)現(xiàn)字符串的合并。2024/6/232例6-11:使用join函數(shù)連接字符串2024/6/233執(zhí)行結(jié)果:例6-12:使用reduce函數(shù)連接字符串2024/6/234執(zhí)行結(jié)果:5、拆分函數(shù)函數(shù)返回的字符串s.partition(t)將s拆分為三個字符串(head、t和tail),其中head為t前面的子串,tail為t后面的子串。返回值為元組s.rpartition(t)與partition相同,但從s的右端開始搜索t。返回值為元組s.split(t)以t為分隔符,將s劃分成一系列子串,并返回一個由這些子串組成的列表s.rsplit(t)與split相同,但從s的右端開始搜索ts.splitlines()返回一個由s中的各行組成的列表2024/6/235拆分函數(shù)將字符串拆分成多個子串。如下表所示。例6-13:拆分字符串2024/6/236執(zhí)行結(jié)果:例6-14:使用split()函數(shù)獲取子串2024/6/237執(zhí)行結(jié)果:6、字符串與日期的轉(zhuǎn)換在實(shí)際應(yīng)用中,經(jīng)常需要將日期類型與字符串類型互相轉(zhuǎn)換。Python提供了time模塊處理日期和時間。函數(shù)strftime()可以實(shí)現(xiàn)從時間到字符串的轉(zhuǎn)換。字符串到時間的轉(zhuǎn)換要進(jìn)行兩次轉(zhuǎn)換,需要使用time模塊和datetime類。2024/6/238strftime()函數(shù):聲明:strftime(format[,tuple])->string說明:參數(shù)format表示格式化日期的特殊字符。例如:“%Y-%m-%d”相當(dāng)于“yyyy-MM-dd”.參數(shù)tuple表示需要轉(zhuǎn)換的時間,用元組存儲。元組中的元素分別表示年、月、日、時、分、秒。函數(shù)返回一個表示時間的字符串。2024/6/239字符串到時間的轉(zhuǎn)換步驟:第一次轉(zhuǎn)換:調(diào)用函數(shù)strptime()將字符串轉(zhuǎn)換為一個元組。其聲明為:strptime(string,format)->struct_time函數(shù)返回一個存放時間的元組。第二次轉(zhuǎn)換:將表示年、月、日的3個變量傳遞給函數(shù)datetime()。datetime類的datetime()函數(shù)格式為:

datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]])函數(shù)返回一個date類型的變量。2024/6/240格式化日期的常用標(biāo)記:符號描述符號描述%a英文星期的簡寫%M分鐘數(shù),取值在01~59之間%A英文星期的完整拼寫%j顯示從本年第1天開始到當(dāng)天的天數(shù)%b英文月份的簡寫%w顯示今天是星期幾,0表示星期天%B英文月份的完整拼寫%W顯示當(dāng)天屬于本年的第幾周,以星期一作為一周的第一條進(jìn)行計算%c顯示本地的日期和時間%x本地的當(dāng)天日期%d日期數(shù),取值在1~31之間%X本地的當(dāng)天時間%H小時數(shù),取值在00~23之間%y年份,取值在00~99之間%I小時數(shù),取值在01~12之間%Y年份的完整數(shù)字%m月份,取值在01~12之間2024/6/241例6-15:時間與字符串的互相轉(zhuǎn)換2024/6/242執(zhí)行結(jié)果:7、改變大小寫函數(shù)函數(shù)名返回的字符串s.capitalize()將s[0]改為大寫,其余小寫s.lower()讓s的所有字母都小寫s.upper()讓s的所有字母都大寫s.swapcase()將小寫字母改為大寫,并將大寫字母改為小寫s.title()讓s的大小寫符合標(biāo)題的要求2024/6/243說明:在以上函數(shù)中,Python都創(chuàng)立并返回一個新字符串,Python不會真正修改原字符串。例如:2024/6/2448、設(shè)置格式函數(shù)函數(shù)名返回的字符串s.center(n,ch)包含n個字符的字符串,其中s位于中間,兩邊用字符ch填充s.ljust(n,ch)包含n個字符的字符串,其中s位于左邊,右邊用字符ch填充s.rjust(n,ch)包含n個字符的字符串,其中s位于右邊,左邊邊用字符ch填充s.format(vars)包含用于設(shè)置字符串格式的微型語言,詳見:/3.4/library/string.html#formatspec2024/6/245例6-16:設(shè)置格式2024/6/246執(zhí)行結(jié)果:9、剝除函數(shù)函數(shù)名返回的字符串s.strip(ch)從s開頭和末尾刪除所有包含在字符串ch中的字符s.lstrip(ch)從s開頭(左端)刪除所有包含在字符串ch中的字符s.rstrip(ch)從s末尾(右端)刪除所有包含在字符串ch中的字符2024/6/247剝除函數(shù)用于刪除字符串開頭或末尾多余的字符。如下表所示。默認(rèn)情況下,剝除空白字符;如果指定了字符串參數(shù),那么剝除該字符串中的字符。例6-17:字符串剝除2024/6/248執(zhí)行結(jié)果:例6-18:去除轉(zhuǎn)義字符2024/6/249執(zhí)行結(jié)果:10、字符串比較Python直接使用“==”“!=”操作符比較兩個字符串的內(nèi)容。如果比較的兩個變量的類型不相同、比較的內(nèi)容也不相同。假設(shè)要比較字符串的局部內(nèi)容,可以先截取子串,再使用“==”“!=”操作符進(jìn)行比較。假設(shè)要比較字符串的開頭和結(jié)尾局部,更方便的方式是使用startswith()或endswith()函數(shù)。startswith()與endswith()的聲明為:startswith(substring,[start[,end]])endswith(substring,[start[,end]])2024/6/250例6-19:字符串比較2024/6/251執(zhí)行結(jié)果:例6-20:比較字符串開始和結(jié)束處2024/6/252執(zhí)行結(jié)果:課堂練習(xí)二:一、假定給定兩個字符串〔它們可能是空串〕s1和s2,要將這兩個串合并在一起。要求是:s1串的第一個字符與s2串的第一個字符連在一起,后續(xù)以此類推。假設(shè)一個串的長度大于另一個串的長度,那么保存長串的剩余字符,即連接到新串的末尾即可。例如:假設(shè)s1=’abcd’、s2=’efghi’,那么新串為:’aebfcgdhi’。編寫函數(shù)laceStrings(s1,s2),完成上述功能。

二、編寫函數(shù)OnlyCharNum(s),對于給定的字符串只顯示字母和數(shù)字。2024/6/253五、正那么表達(dá)式簡介雖然Python字符串提供了眾多實(shí)用的函數(shù),但實(shí)際處理字符串時,常常需要更強(qiáng)大的工具。鑒于此,Python提供了一種用于復(fù)雜字符串處理的微型語言—正那么表達(dá)式,但正那么表達(dá)式并不是Python的一局部。正那么表達(dá)式是用于處理字符串的強(qiáng)大工具,擁有自己獨(dú)特的語法以及一個獨(dú)立的處理引擎,效率上可能不如str自帶的方法,但功能十分強(qiáng)大。實(shí)際上,正那么表達(dá)式是一種簡練描繪一組字符串的方式,可用于高效地執(zhí)行常見的字符串處理任務(wù),如匹配、替換和分拆字符串。使用正那么表達(dá)式編寫一些邏輯驗(yàn)證非常方便,如:電子郵件及號碼的格式驗(yàn)證。Python提供了re模塊實(shí)現(xiàn)正那么表達(dá)式的驗(yàn)證。2024/6/2541、正那么表達(dá)式的構(gòu)成正那么表達(dá)式是包含元字符(metacharacter)的列表。Python支持的正那么表達(dá)式元字符和語法2024/6/2552、re模塊中一些重要函數(shù)函數(shù)描述compile(pattern[,flags])根據(jù)包含正則表達(dá)式的字符串創(chuàng)建模式對象search(pattern,string[,flags])在字符串中查找模式match(pattern,string[,

溫馨提示

  • 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

提交評論