




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2023/1/161Python語言編程導(dǎo)論第六章字符串內(nèi)容提要概述通用序列操作字符串格式化字符串方法正則表達式簡介2023/1/162一、概述在Python中,字符串是除數(shù)字外最重要的數(shù)據(jù)類型。字符串無處不在:將字符串輸出到屏幕上;從用戶的鍵盤輸入讀取字符串;文件通常被視為大型字符串;網(wǎng)頁大部分是由文本組成的。字符串是一種聚合數(shù)據(jù)結(jié)構(gòu),可充分利用索引和切片—用于從字符串中提取子串。而Python正則表達式庫,是一種用來處理字符串的微型語言,但功能強大。2023/1/163二、通用序列操作Python中,字符串、列表和元組都屬于序列。序列有一些通用的操作。包括:索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)、檢查某個元素是否屬于序列的成員(成員資格)、計算序列長度、找出最大元素和最小元素等。2023/1/1641、索引序列中的全部元素都是有編號的—從0起先遞增。這些元素可以通過編號分別訪問。索引有正索引和負索引,可依據(jù)實際狀況選用。字符串就是一個由字符組成的序列,處理字符串時,常常須要訪問其中的各個字符。索引0指向第1個字符。2023/1/165例如:字符串’apple’的正索引和負索引2023/1/166例6-1:字符串索引應(yīng)用2023/1/167執(zhí)行結(jié)果:例6-2:計算給定字符串的編碼總和2023/1/168執(zhí)行結(jié)果:2、分片與運用索引訪問單個元素類似,可以運用分片操作來訪問確定范圍內(nèi)的元素。分片是實際應(yīng)用中常常運用的技術(shù),被截取的部分稱為“子串”Python3支持的分片格式為:S[i:j:k]表示:索引S對象中的元素,從索引為i直到索引為j-1,每隔k個元素索引一次,第三個限制k為步長,默認為1,也可以運用負數(shù)作為步長,步長-1表示分片將會從右至左進行而不是通常的從左至右,實際效果主是將序列反轉(zhuǎn)。在Python中,還可以運用split()函數(shù)來截取字符串。2023/1/169例6-3:字符串分片2023/1/1610執(zhí)行結(jié)果:例6-4:返回文件名中的擴展名2023/1/1611執(zhí)行結(jié)果:2023/1/16123、序列相加(字符串連接、合并)之前介紹過,運用“+”完成。除此之外,還可以運用join函數(shù)和reduce函數(shù)實現(xiàn)字符串的合并。留意:不同類型的數(shù)據(jù)不能相加。如:4、乘法用數(shù)字x乘以一個序列會生成新的序列,在新的序列中,原來的序列被重復(fù)x次。如:5、成員資格為了檢查一個值是否在序列中,可以運用in運算符。該運算符檢查某個條件是否為真,若為真返回True,否則返回False。例如:2023/1/16136、長度、最小值和最大值len、min和max都是內(nèi)置函數(shù)。len—返回序列中包含的元素個數(shù)。min—返回序列中的最小值。max—返回序列中的最大值。例如:2023/1/1614課堂練習(xí)一:課堂練習(xí)一2023/1/1615三、字符串格式化1、字符串格式化C語言運用函數(shù)printf()格式化輸出結(jié)果,Python也供應(yīng)了類似功能。Python將若干值插入帶有“%”標記的字符串中,從而可以依據(jù)指定格式輸出字符串。語法:"%s"%str1"%s%s"%(str1,str2)2023/1/1616例6-5:格式化字符串2023/1/1617執(zhí)行結(jié)果:例6-6:帶精度的格式化2023/1/1618執(zhí)行結(jié)果:Python格式化字符串的替代符及含義:符號描述符號描述%c格式化字符及其ASCII碼%f格式化浮點數(shù)字,可指定小數(shù)點后的精度%s格式化字符串%e用科學(xué)計數(shù)法格式化浮點數(shù)%d格式化整數(shù)%E作用同%e%u格式化無符號整數(shù)%g根據(jù)值的大小決定使用%f或%e%o格式化無符號八進制數(shù)%G作用同%g%x格式化無符號十六進制數(shù)%p用十六進制數(shù)格式化變量的地址%X格式化無符號十六進制數(shù)(大寫)%%若在字符串中輸出“%”,需要使用“%%”2023/1/1619例6-7:符號、對齊和用0填充在字段寬度和精度之間還可以放置一個“標記”,該標記可以是零、加號、減號或空格。零表示數(shù)字將會用0填充。2023/1/1620執(zhí)行結(jié)果:2、字符串的轉(zhuǎn)義字符計算機中存在可見字符與不行見字符??梢娮址告I盤上的字母、數(shù)字和符號。不行見字符是指換行、回車、制表符等字符。對于不行見字符,Python運用的方法類似于C語言,都是運用“\”作為轉(zhuǎn)義字符。Python還供應(yīng)了函數(shù)strip()、lstrip()、rstrip()去除字符串中的轉(zhuǎn)義字符。2023/1/1621Python常用的轉(zhuǎn)義字符及其含義:符號描述符號描述\\反斜線\v縱向制表符\’單引號\r回車符\”雙引號\f換頁符\a發(fā)出系統(tǒng)響鈴聲\o八進制數(shù)代表的字符\b退格符\x十六進制數(shù)代表的字符\n換行符\000終止符,其后的字符串全部忽略\t橫向制表符2023/1/1622例6-8:轉(zhuǎn)義字符應(yīng)用2023/1/1623執(zhí)行結(jié)果:四、字符串函數(shù)(方法)Python字符串自帶了大量很有用的函數(shù),要查看這些函數(shù),可調(diào)用dir并將參數(shù)指定為任何字符串(如:dir(''))。雖無必要精確記居處有函數(shù)功能,但最好有個大致了解,這樣有益于須要時去查詢具體運用。字符串函數(shù)的具體介紹可參閱其文檔字符串或Python在線文檔(s:///3/)。此處介紹常用的字符串函數(shù)。2023/1/16241、測試函數(shù)用于檢測字符串是否為特定格式的函數(shù),它們組成了一個最大的字符串函數(shù)組。測試函數(shù)都返回True或False,因此也稱為布爾函數(shù)或謂詞。2023/1/1625字符串測試函數(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只包含表示十進制數(shù)字的字符s.istitle()s是個大小寫符合標題要求的字符串s.isdigit()s只包含數(shù)字字符s.isupper()s只包含大寫字母s.isidentifier()s是合法的標識符tinss包含字符串t2023/1/1626例如:2023/1/16272、字符串的查找函數(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相同,但從右往左查找2023/1/1628說明:函數(shù)index和find之間的差別在于沒有找到指定子串的情形。函數(shù)index引發(fā)異樣ValueError,而函數(shù)find將返回-1。例6-9:查找函數(shù)應(yīng)用2023/1/1629執(zhí)行結(jié)果:3、字符串的替換函數(shù)函數(shù)名返回的字符串s.replace(old,new)將s中的每個old替換為news.expandtabs(n)將s中的每個制表符擴展為空格,空格寬度為n2023/1/1630Python字符串自帶了兩個替換函數(shù),如下表所示。留意:運用替換函數(shù)可輕松地刪除字符串中的子串。例6-10:字符串替換2023/1/1631執(zhí)行結(jié)果:4、字符串的合并之前介紹過,Python可運用“+”連接不同的字符串。除此之外,還可以運用join函數(shù)(是split方法的逆方法)和reduce函數(shù)實現(xiàn)字符串的合并。2023/1/1632例6-11:運用join函數(shù)連接字符串2023/1/1633執(zhí)行結(jié)果:例6-12:運用reduce函數(shù)連接字符串2023/1/1634執(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中的各行組成的列表2023/1/1635拆分函數(shù)將字符串拆分成多個子串。如下表所示。例6-13:拆分字符串2023/1/1636執(zhí)行結(jié)果:例6-14:運用split()函數(shù)獲得子串2023/1/1637執(zhí)行結(jié)果:6、字符串與日期的轉(zhuǎn)換在實際應(yīng)用中,常常須要將日期類型與字符串類型相互轉(zhuǎn)換。Python供應(yīng)了time模塊處理日期和時間。函數(shù)strftime()可以實現(xiàn)從時間到字符串的轉(zhuǎn)換。字符串到時間的轉(zhuǎn)換要進行兩次轉(zhuǎn)換,須要運用time模塊和datetime類。2023/1/1638strftime()函數(shù):聲明:strftime(format[,tuple])->string說明:參數(shù)format表示格式化日期的特殊字符。例如:“%Y-%m-%d”相當于“yyyy-MM-dd”.參數(shù)tuple表示須要轉(zhuǎn)換的時間,用元組存儲。元組中的元素分別表示年、月、日、時、分、秒。函數(shù)返回一個表示時間的字符串。2023/1/1639字符串到時間的轉(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類型的變量。2023/1/1640格式化日期的常用標記:符號描述符號描述%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之間2023/1/1641例6-15:時間與字符串的相互轉(zhuǎn)換2023/1/1642執(zhí)行結(jié)果:7、變更大小寫函數(shù)函數(shù)名返回的字符串s.capitalize()將s[0]改為大寫,其余小寫s.lower()讓s的所有字母都小寫s.upper()讓s的所有字母都大寫s.swapcase()將小寫字母改為大寫,并將大寫字母改為小寫s.title()讓s的大小寫符合標題的要求2023/1/1643說明:在以上函數(shù)中,Python都創(chuàng)建并返回一個新字符串,Python不會真正修改原字符串。例如:2023/1/16448、設(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#formatspec2023/1/1645例6-16:設(shè)置格式2023/1/1646執(zhí)行結(jié)果:9、剝除函數(shù)函數(shù)名返回的字符串s.strip(ch)從s開頭和末尾刪除所有包含在字符串ch中的字符s.lstrip(ch)從s開頭(左端)刪除所有包含在字符串ch中的字符s.rstrip(ch)從s末尾(右端)刪除所有包含在字符串ch中的字符2023/1/1647剝除函數(shù)用于刪除字符串開頭或末尾多余的字符。如下表所示。默認狀況下,剝除空白字符;假如指定了字符串參數(shù),則剝除該字符串中的字符。例6-17:字符串剝除2023/1/1648執(zhí)行結(jié)果:例6-18:去除轉(zhuǎn)義字符2023/1/1649執(zhí)行結(jié)果:10、字符串比較Python干脆運用“==”“!=”操作符比較兩個字符串的內(nèi)容。假如比較的兩個變量的類型不相同、比較的內(nèi)容也不相同。若要比較字符串的部分內(nèi)容,可以先截取子串,再運用“==”“!=”操作符進行比較。若要比較字符串的開頭和結(jié)尾部分,更便利的方式是運用startswith()或endswith()函數(shù)。startswith()與endswith()的聲明為:startswith(substring,[start[,end]])endswith(substring,[start[,end]])2023/1/1650例6-19:字符串比較2023/1/1651執(zhí)行結(jié)果:例6-20:比較字符串起先和結(jié)束處2023/1/1652執(zhí)行結(jié)果:課堂練習(xí)二:一、假定給定兩個字符串(它們可能是空串)s1和s2,要將這兩個串合并在一起。要求是:s1串的第一個字符與s2串的第一個字符連在一起,后續(xù)以此類推。若一個串的長度大于另一個串的長度,則保留長串的剩余字符,即連接到新串的末尾即可。例如:若s1=’abcd’、s2=’efghi’,則新串為:’aebfcgdhi’。編寫函數(shù)laceStrings(s1,s2),完成上述功能。
二、編寫函數(shù)OnlyCharNum(s),對于給定的字符串只顯示字母和數(shù)字。2023/1/1653五、正則表達式簡介雖然Python字符串供應(yīng)了眾多好用的函數(shù),但實際處理字符串時,常常須要更強大的工具。鑒于此,Python供應(yīng)了一種用于困難字符串處理的微型語言—正則表達式,但正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法,但功能特殊強大。事實上,正則表達式是一種簡練描繪一組字符串的方式,可用于高效地執(zhí)行常見的字符串處理任務(wù),如匹配、替換和分拆字符串。運用正則表達式編寫一些邏輯驗證特殊便利,如:電子郵件及電話號碼的格式驗證。Python供應(yīng)了re模塊實現(xiàn)正則表達式的驗證。2023/1/16541、正則表達式的構(gòu)成正則表達式是包含元字符(metacharacter)的列表。Python支持的正則表達式元字符和語法2023/1/16552、re模塊中一些重要函數(shù)函數(shù)描述compile(pattern[,flags])根據(jù)包含正則表達式的字符串創(chuàng)建模式對象search(pattern,string[,flags])在字符串中查找模式match(pattern,string[,flags])在字符串的開始處匹配模式split(pat
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司之間購銷合同范例
- 出售球墨鑄鐵生鐵合同范例
- 傳媒項目制合同范例
- 代加工砂石合同范例
- 中標工程轉(zhuǎn)讓合同范例
- 園林景觀橋施工方案
- 水渠模板加固施工方案
- ceo聘用合同范例
- 農(nóng)村養(yǎng)殖房屋買賣合同范例
- 幼兒園預(yù)防腮腺炎教案中班
- 《小米市場營銷策略》課件
- 2025年湖南高爾夫旅游職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年湖南大眾傳媒職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫新版
- 雙均線策略(TBQ版)
- 北京房屋租賃合同電子版7篇
- 《園林機械使用與維修》課件-任務(wù)3.園林養(yǎng)護機械
- deepseek-r1論文-中文翻譯版
- 項目式學(xué)習(xí)在小學(xué)數(shù)學(xué)教學(xué)中的應(yīng)用
- 2024年05月山東威海市商業(yè)銀行科技類社會招考筆試歷年參考題庫附帶答案詳解
- 2025中智集團下屬單位公開招聘41人高頻重點提升(共500題)附帶答案詳解
- 中醫(yī)理療館路演
評論
0/150
提交評論