版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2024/6/21Python語言編程導論第六章字符串內容提要概述通用序列操作字符串格式化字符串方法正那么表達式簡介2024/6/22一、概述在Python中,字符串是除數(shù)字外最重要的數(shù)據(jù)類型。字符串無處不在:將字符串輸出到屏幕上;從用戶的鍵盤輸入讀取字符串;文件通常被視為大型字符串;網(wǎng)頁大局部是由文本組成的。字符串是一種聚合數(shù)據(jù)結構,可充分利用索引和切片—用于從字符串中提取子串。而Python正那么表達式庫,是一種用來處理字符串的微型語言,但功能強大。2024/6/23二、通用序列操作Python中,字符串、列表和元組都屬于序列。序列有一些通用的操作。包括:索引〔indexing〕、分片〔slicing〕、加〔adding〕、乘〔multiplying〕、檢查某個元素是否屬于序列的成員〔成員資格〕、計算序列長度、找出最大元素和最小元素等。2024/6/241、索引序列中的所有元素都是有編號的—從0開始遞增。這些元素可以通過編號分別訪問。索引有正索引和負索引,可根據(jù)實際情況選用。字符串就是一個由字符組成的序列,處理字符串時,經常需要訪問其中的各個字符。索引0指向第1個字符。2024/6/25例如:字符串’apple’的正索引和負索引2024/6/26例6-1:字符串索引應用2024/6/27執(zhí)行結果:例6-2:計算給定字符串的編碼總和2024/6/28執(zhí)行結果:2、分片與使用索引訪問單個元素類似,可以使用分片操作來訪問一定范圍內的元素。分片是實際應用中經常使用的技術,被截取的局部稱為“子串”Python3支持的分片格式為:S[i:j:k]表示:索引S對象中的元素,從索引為i直到索引為j-1,每隔k個元素索引一次,第三個限制k為步長,默認為1,也可以使用負數(shù)作為步長,步長-1表示分片將會從右至左進行而不是通常的從左至右,實際效果主是將序列反轉。在Python中,還可以使用split()函數(shù)來截取字符串。2024/6/29例6-3:字符串分片2024/6/210執(zhí)行結果:例6-4:返回文件名中的擴展名2024/6/211執(zhí)行結果:2024/6/2123、序列相加〔字符串連接、合并〕之前介紹過,使用“+”完成。除此之外,還可以使用join函數(shù)和reduce函數(shù)實現(xiàn)字符串的合并。注意:不同類型的數(shù)據(jù)不能相加。如:4、乘法用數(shù)字x乘以一個序列會生成新的序列,在新的序列中,原來的序列被重復x次。如:5、成員資格為了檢查一個值是否在序列中,可以使用in運算符。該運算符檢查某個條件是否為真,假設為真返回True,否那么返回False。例如:2024/6/2136、長度、最小值和最大值len、min和max都是內置函數(shù)。len—返回序列中包含的元素個數(shù)。min—返回序列中的最小值。max—返回序列中的最大值。例如:2024/6/214課堂練習一:課堂練習一2024/6/215三、字符串格式化1、字符串格式化C語言使用函數(shù)printf()格式化輸出結果,Python也提供了類似功能。Python將假設干值插入帶有“%”標記的字符串中,從而可以按照指定格式輸出字符串。語法:"%s"%str1"%s%s"%(str1,str2)2024/6/216例6-5:格式化字符串2024/6/217執(zhí)行結果:例6-6:帶精度的格式化2024/6/218執(zhí)行結果:Python格式化字符串的替代符及含義:符號描述符號描述%c格式化字符及其ASCII碼%f格式化浮點數(shù)字,可指定小數(shù)點后的精度%s格式化字符串%e用科學計數(shù)法格式化浮點數(shù)%d格式化整數(shù)%E作用同%e%u格式化無符號整數(shù)%g根據(jù)值的大小決定使用%f或%e%o格式化無符號八進制數(shù)%G作用同%g%x格式化無符號十六進制數(shù)%p用十六進制數(shù)格式化變量的地址%X格式化無符號十六進制數(shù)(大寫)%%若在字符串中輸出“%”,需要使用“%%”2024/6/219例6-7:符號、對齊和用0填充在字段寬度和精度之間還可以放置一個“標志”,該標志可以是零、加號、減號或空格。零表示數(shù)字將會用0填充。2024/6/220執(zhí)行結果:2、字符串的轉義字符計算機中存在可見字符與不可見字符??梢娮址告I盤上的字母、數(shù)字和符號。不可見字符是指換行、回車、制表符等字符。對于不可見字符,Python使用的方法類似于C語言,都是使用“\”作為轉義字符。Python還提供了函數(shù)strip()、lstrip()、rstrip()去除字符串中的轉義字符。2024/6/221Python常用的轉義字符及其含義:符號描述符號描述\\反斜線\v縱向制表符\’單引號\r回車符\”雙引號\f換頁符\a發(fā)出系統(tǒng)響鈴聲\o八進制數(shù)代表的字符\b退格符\x十六進制數(shù)代表的字符\n換行符\000終止符,其后的字符串全部忽略\t橫向制表符2024/6/222例6-8:轉義字符應用2024/6/223執(zhí)行結果:四、字符串函數(shù)〔方法〕Python字符串自帶了大量很有用的函數(shù),要查看這些函數(shù),可調用dir并將參數(shù)指定為任何字符串〔如:dir('')〕。雖無必要準確記住所有函數(shù)功能,但最好有個大致了解,這樣有益于需要時去查詢具體使用。字符串函數(shù)的詳細介紹可參閱其文檔字符串或Python在線文檔〔〕。此處介紹常用的字符串函數(shù)。2024/6/2241、測試函數(shù)用于檢測字符串是否為特定格式的函數(shù),它們組成了一個最大的字符串函數(shù)組。測試函數(shù)都返回True或False,因此也稱為布爾函數(shù)或謂詞。2024/6/225字符串測試函數(shù):函數(shù)名何時返回True函數(shù)名何時返回Trues.endswith(t)s以字符串t結尾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只包含表示十進制數(shù)字的字符s.istitle()s是個大小寫符合標題要求的字符串s.isdigit()s只包含數(shù)字字符s.isupper()s只包含大寫字母s.isidentifier()s是合法的標識符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ù)應用2024/6/229執(zhí)行結果:3、字符串的替換函數(shù)函數(shù)名返回的字符串s.replace(old,new)將s中的每個old替換為news.expandtabs(n)將s中的每個制表符擴展為空格,空格寬度為n2024/6/230Python字符串自帶了兩個替換函數(shù),如下表所示。注意:使用替換函數(shù)可輕松地刪除字符串中的子串。例6-10:字符串替換2024/6/231執(zhí)行結果:4、字符串的合并之前介紹過,Python可使用“+”連接不同的字符串。除此之外,還可以使用join函數(shù)〔是split方法的逆方法〕和reduce函數(shù)實現(xiàn)字符串的合并。2024/6/232例6-11:使用join函數(shù)連接字符串2024/6/233執(zhí)行結果:例6-12:使用reduce函數(shù)連接字符串2024/6/234執(zhí)行結果: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í)行結果:例6-14:使用split()函數(shù)獲取子串2024/6/237執(zhí)行結果:6、字符串與日期的轉換在實際應用中,經常需要將日期類型與字符串類型互相轉換。Python提供了time模塊處理日期和時間。函數(shù)strftime()可以實現(xiàn)從時間到字符串的轉換。字符串到時間的轉換要進行兩次轉換,需要使用time模塊和datetime類。2024/6/238strftime()函數(shù):聲明:strftime(format[,tuple])->string說明:參數(shù)format表示格式化日期的特殊字符。例如:“%Y-%m-%d”相當于“yyyy-MM-dd”.參數(shù)tuple表示需要轉換的時間,用元組存儲。元組中的元素分別表示年、月、日、時、分、秒。函數(shù)返回一個表示時間的字符串。2024/6/239字符串到時間的轉換步驟:第一次轉換:調用函數(shù)strptime()將字符串轉換為一個元組。其聲明為:strptime(string,format)->struct_time函數(shù)返回一個存放時間的元組。第二次轉換:將表示年、月、日的3個變量傳遞給函數(shù)datetime()。datetime類的datetime()函數(shù)格式為:
datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]])函數(shù)返回一個date類型的變量。2024/6/240格式化日期的常用標記:符號描述符號描述%a英文星期的簡寫%M分鐘數(shù),取值在01~59之間%A英文星期的完整拼寫%j顯示從本年第1天開始到當天的天數(shù)%b英文月份的簡寫%w顯示今天是星期幾,0表示星期天%B英文月份的完整拼寫%W顯示當天屬于本年的第幾周,以星期一作為一周的第一條進行計算%c顯示本地的日期和時間%x本地的當天日期%d日期數(shù),取值在1~31之間%X本地的當天時間%H小時數(shù),取值在00~23之間%y年份,取值在00~99之間%I小時數(shù),取值在01~12之間%Y年份的完整數(shù)字%m月份,取值在01~12之間2024/6/241例6-15:時間與字符串的互相轉換2024/6/242執(zhí)行結果:7、改變大小寫函數(shù)函數(shù)名返回的字符串s.capitalize()將s[0]改為大寫,其余小寫s.lower()讓s的所有字母都小寫s.upper()讓s的所有字母都大寫s.swapcase()將小寫字母改為大寫,并將大寫字母改為小寫s.title()讓s的大小寫符合標題的要求2024/6/243說明:在以上函數(shù)中,Python都創(chuàng)立并返回一個新字符串,Python不會真正修改原字符串。例如:2024/6/2448、設置格式函數(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)包含用于設置字符串格式的微型語言,詳見:/3.4/library/string.html#formatspec2024/6/245例6-16:設置格式2024/6/246執(zhí)行結果:9、剝除函數(shù)函數(shù)名返回的字符串s.strip(ch)從s開頭和末尾刪除所有包含在字符串ch中的字符s.lstrip(ch)從s開頭(左端)刪除所有包含在字符串ch中的字符s.rstrip(ch)從s末尾(右端)刪除所有包含在字符串ch中的字符2024/6/247剝除函數(shù)用于刪除字符串開頭或末尾多余的字符。如下表所示。默認情況下,剝除空白字符;如果指定了字符串參數(shù),那么剝除該字符串中的字符。例6-17:字符串剝除2024/6/248執(zhí)行結果:例6-18:去除轉義字符2024/6/249執(zhí)行結果:10、字符串比較Python直接使用“==”“!=”操作符比較兩個字符串的內容。如果比較的兩個變量的類型不相同、比較的內容也不相同。假設要比較字符串的局部內容,可以先截取子串,再使用“==”“!=”操作符進行比較。假設要比較字符串的開頭和結尾局部,更方便的方式是使用startswith()或endswith()函數(shù)。startswith()與endswith()的聲明為:startswith(substring,[start[,end]])endswith(substring,[start[,end]])2024/6/250例6-19:字符串比較2024/6/251執(zhí)行結果:例6-20:比較字符串開始和結束處2024/6/252執(zhí)行結果:課堂練習二:一、假定給定兩個字符串〔它們可能是空串〕s1和s2,要將這兩個串合并在一起。要求是:s1串的第一個字符與s2串的第一個字符連在一起,后續(xù)以此類推。假設一個串的長度大于另一個串的長度,那么保存長串的剩余字符,即連接到新串的末尾即可。例如:假設s1=’abcd’、s2=’efghi’,那么新串為:’aebfcgdhi’。編寫函數(shù)laceStrings(s1,s2),完成上述功能。
二、編寫函數(shù)OnlyCharNum(s),對于給定的字符串只顯示字母和數(shù)字。2024/6/253五、正那么表達式簡介雖然Python字符串提供了眾多實用的函數(shù),但實際處理字符串時,常常需要更強大的工具。鑒于此,Python提供了一種用于復雜字符串處理的微型語言—正那么表達式,但正那么表達式并不是Python的一局部。正那么表達式是用于處理字符串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法,但功能十分強大。實際上,正那么表達式是一種簡練描繪一組字符串的方式,可用于高效地執(zhí)行常見的字符串處理任務,如匹配、替換和分拆字符串。使用正那么表達式編寫一些邏輯驗證非常方便,如:電子郵件及號碼的格式驗證。Python提供了re模塊實現(xiàn)正那么表達式的驗證。2024/6/2541、正那么表達式的構成正那么表達式是包含元字符(metacharacter)的列表。Python支持的正那么表達式元字符和語法2024/6/2552、re模塊中一些重要函數(shù)函數(shù)描述compile(pattern[,flags])根據(jù)包含正則表達式的字符串創(chuàng)建模式對象search(pattern,string[,flags])在字符串中查找模式match(pattern,string[,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- YC/T 616-2024殘次煙判定及處理規(guī)范
- 醫(yī)院住院樓混凝土施工承包合同
- 生態(tài)農業(yè)管理創(chuàng)新技巧
- 企業(yè)資金管理辦法:資金結構調整
- 鋼鐵冶煉工程招投標實施策略
- 2024年鏟車節(jié)能減排協(xié)議3篇
- 2024展廳裝飾裝修承包合同(含展品保管與維護)3篇
- 2024年度趙苑離婚協(xié)議中子女探望權及監(jiān)護權協(xié)議書3篇
- 社會工作教師聘用協(xié)議
- 施工協(xié)議書與材料質量
- 期末測試卷(一)2024-2025學年 人教版PEP英語五年級上冊(含答案含聽力原文無聽力音頻)
- 2023-2024學年廣東省深圳市南山區(qū)八年級(上)期末英語試卷
- 期末 (試題) -2024-2025學年人教PEP版(2024)英語三年級上冊
- 漢服娃衣創(chuàng)意設計與制作智慧樹知到期末考試答案章節(jié)答案2024年四川文化產業(yè)職業(yè)學院
- 《大數(shù)據(jù)技術原理與應用(第3版)》期末復習題庫(含答案)
- 廣東省中山市2023-2024學年四年級上學期期末數(shù)學試卷
- 8款-組織架構圖(可編輯)
- 海螺牌水泥質量檢驗報告28天報告425加章2015
- 云南省教育科學規(guī)劃課題開題報告 - 云南省教育科學研究院
- 二年級上,數(shù)學,3個兩位數(shù)加減,80題,(豎式計算)
- 人民法院涉訴信訪案件終結辦法
評論
0/150
提交評論