Python程序設計現(xiàn)代方法(第2版) 課件 第3章 字符串_第1頁
Python程序設計現(xiàn)代方法(第2版) 課件 第3章 字符串_第2頁
Python程序設計現(xiàn)代方法(第2版) 課件 第3章 字符串_第3頁
Python程序設計現(xiàn)代方法(第2版) 課件 第3章 字符串_第4頁
Python程序設計現(xiàn)代方法(第2版) 課件 第3章 字符串_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章字符串《Python程序設計現(xiàn)代方法(第2版)》學習目標/Target

掌握字符串的定義方式,能夠準確定義字符串

掌握字符串的索引和切片,能夠通過索引和切片獲取字符串的子串

掌握字符格式化方式,能夠通過%、format()和f-string格式化字符串學習目標/Target

掌握字符串的處理函數(shù),能夠通過len()函數(shù)和ord函數(shù)實現(xiàn)特定功能

掌握字符串的處理方法,能夠根據(jù)需要選擇合適的方法處理字符串

熟悉字符串的運算符,能夠通過+和*運算符實現(xiàn)字符串的拼接和復制章節(jié)概述/Summary日常生活中經(jīng)常會看見一些文本類型的數(shù)據(jù),比如電子郵件、評論、個人資料等,這些數(shù)據(jù)的內(nèi)容形式比較復雜,包括字母、數(shù)字、標點符號、特殊符號、漢字等,程序中使用字符串表示這些信息。本章將針對字符串的內(nèi)容進行詳細講解。目錄/Contents01字符串的定義字符串的索引和切片字符串格式化實例:制作高鐵名片020304目錄/Contents05字符串運算符字符串處理函數(shù)字符串處理方法0607實例:文本檢測程序08字符串的定義3.13.1字符串的定義字符串是一個有序的字符集合,它里面的字符默認采用Unicode編碼,可以是字母、數(shù)字、標點、特殊符號、中文等字符。需要說明的是,Python中沒有字符類型,即便一個字符也屬于字符串。Python支持使用單引號、雙引號和三引號定義字符串,三引號可以是三單引號和三雙引號,其中使用單引號、雙引號定義的字符串只能單行顯示,三引號定義的字符串支持多行顯示。‘凡事以理想為因,實行為果’

#使用單引號定義字符串“凡事以理想為因,實行為果”

#使用雙引號定義字符串

'''凡事以理想為因,實行為果'''

#使用三單引號定義字符串"""凡事以理想為因,

實行為果“”“

#使用三雙引號定義字符串3.1字符串的定義使用單引號或雙引號定義字符串時,字符串的內(nèi)容不能包含單引號或雙引號。例如,英文語句Let‘slearnPython中有一個單引號,如果此時仍然使用單引號定義包含該英文語句的字符串,則會出現(xiàn)錯誤信息。

3.1字符串的定義'Let'slearnPython''Let'slearnPython'^SyntaxError:unterminatedstringliteral(detectedatline131)運行代碼,結(jié)果如下所示:為了避免程序中出現(xiàn)這類問題,可以使用雙引號或三引號定義字符串。例如,將上述示例中定義字符串時使用的單引號分別修改為雙引號或三引號,改后的代碼如下:3.1字符串的定義"Let'slearnPython""""Let'slearnPython""“'''Let'slearnPython'''同理,若字符串包裹的內(nèi)容中包含雙引號,則可以使用單引號或三引號定義字符串

以確保Python解釋器能夠按預期對引號進行配對。除此之外,還可以利用反斜杠“\”對引號進行轉(zhuǎn)義,使Python解釋器將轉(zhuǎn)義后的引號作為普通字符對待。示例如下:3.1字符串的定義words='Let\'slearnPython'#使用反斜桿轉(zhuǎn)義字符串里面的單引號print(words)運行代碼,結(jié)果如下所示。Let'slearnPython有些情況下,反斜杠也會作為字符串的一部分,比如表示W(wǎng)indows系統(tǒng)下文件路徑的字符串“D:\PythonProject\Chapter01\next.py”中,由于\n特殊性,它會使\n連接的后面語句出現(xiàn)換行,示例如下:3.1字符串的定義運行代碼,結(jié)果如下所示。words='D:\PythonProject\Chapter01\next.py'print(words)D:\PythonProject\Chapter01ext.py3.1字符串的定義1盡管字符串的定義方式有很多,但是同一文件中應統(tǒng)一使用方式,避免多種方式混合使用。2如果在字符串中包含某種形式的引號,那么應優(yōu)先使用其他形式的引號定義字符串,而非使用轉(zhuǎn)義字符。3如果三引號定義的字符串沒有賦值給變量,那么它會被視為多行注釋。多學一招:轉(zhuǎn)義字符一些普通字符與反斜杠組合后將失去原有意義,產(chǎn)生新的含義。類似這樣的與反斜杠組合而成的、具有特殊意義的一串字符就是轉(zhuǎn)義字符。轉(zhuǎn)義字符通常用于表示一些無法直接顯示的字符,例如制表符、回車符等。轉(zhuǎn)義字符功能說明\b退格\n換行符\v垂直制表符\t水平制表符\r回車符\'單引號字符\"雙引號字符字符串的索引與切片3.23.2字符串的索引和切片Python中字符串可以包含多個字符,這些字符按一定順序排列,每個字符所在的位置有著固定的編號,以便用戶通過該編號訪問它們,這些位置編號被稱為索引或者下標。按照不同的方向,索引分為正向索引和逆向索引。正向索引的值從0開始,逆向索引的值從-1開始。3.2字符串的索引和切片通過索引可以其對應的單個字符,使用方式為“字符串[索引]”。words='精誠所至金石為開'char_one=words[1]#獲取索引為1的字符“誠”char_two=words[-7]#獲取索引為-7的字符“誠”3.2字符串的索引和切片通過切片從字符串中截取子串,切片的語法格式如下。字符串[起始索引:結(jié)束索引:步長]起始索引:表示截取字符的起始位置,取值可以是正向索引或逆向索引。結(jié)束索引:表示截取字符的結(jié)束位置,取值可以為正向索引或逆向索引。步長:表示每隔指定數(shù)量的字符截取一次字符串,取值可以是正負整數(shù),默認值為1。若步長為正整數(shù),則會按照從左到右的順序取值;若步長為負整數(shù),則會按照從右到左的順序取值。需要注意的是,切片截取的子串包含起始索引對應的字符,但不包含結(jié)束索引對應字符。3.2字符串的索引和切片切片的示例如下:print(words[:5])#獲取從索引0到索引5之前的子串print(words[5:])#獲取從索引5到末尾的子串print(words[4:6])#獲取從索引4到索引6之前的子串print(words[::2])#獲取從索引0到末尾、步長為2的子串print(words[-4:-2])#獲取從索引-4到索引-2之前的子串print(words[-4:6])#獲取從索引-4到索引6之前的子串精誠所至金石為開金石精所金為金石金石運行結(jié)果3.2字符串的索引和切片值得一提的是,Python中的字符串與其他編程語言不同,它是不可變的,一旦定義完成后不能被修改。如果嘗試給某個索引對應的字符重新賦值時,則會出現(xiàn)語法錯誤信息。words[3]=','TypeError:'str'objectdoesnotsupportitemassignment運行代碼,結(jié)果如下:字符串格式3.33.3.1使用格式符%格式化字符串在使用格式符對字符串格式化時,Python會使用一個帶有格式符的字符串作為模板,這個格式符用于為真實值預留位置,并說明真實值應該呈現(xiàn)的格式。

"我叫%s"%"小明"使用一個元組將多個真實值傳遞給字符串模板,元組中的每個值對應著一個格式符。

"我叫%s,今年%d歲了"%("小明",18)Python還支持更多類型的格式符,每種格式符適用于不同的數(shù)據(jù)類型。格式符功能說明%c格式化單個字符及其ASCII碼%s格式化字符串%i或%d格式化有符號的十進制整數(shù)%o格式化有符號的八進制整數(shù)%x格式化有符號的十六進制整數(shù)%e格式化科學計數(shù)法表示的浮點數(shù),以e為底數(shù)%E格式化科學計數(shù)法表示的浮點數(shù),以E為底數(shù)%f格式化十進制表示的浮點數(shù)3.3.1使用格式符%格式化字符串當使用多個格式符對字符串進行格式化時,還可以通過字典傳值,這時需要先以“(name)”形式對變量進行命名,每個命名對應字典的一個鍵,示例如下:format_string="我叫%(name)s,今年%(age)d歲了"%{"name":"小明","age":18}print(format_string)運行代碼,結(jié)果如下所示。我叫小明,今年18歲了3.3.1使用格式符%格式化字符串3.3.2使用format()方法格式化字符串使用format()方法格式化字符串的語法格式如下:模板字符串.format(值0,值1,...)format_string="我叫{},今年18歲了".format("小明")print(format_string)我叫小明,今年18歲了示例代碼:運行結(jié)果:3.3.2使用format()方法格式化字符串如果模板字符串中有多個符號{},并且{}內(nèi)沒有指定任何值的序號,則默認{}內(nèi)的序號與值的順序是互相對應的,序號從0開始遞增,此時會按照從左到右的順序依次用值替換。3.3.2使用format()方法格式化字符串如果模板字符串的{}內(nèi)明確指定了值的序號,則需要按照序號使用相應的值進行替換。

3.3.2使用format()方法格式化字符串在format()方法中,模板字符串的{}內(nèi)除了參數(shù)序號以外,還可以加入其他控制信息,以便能定制更豐富的格式。{}內(nèi)加入控制信息的語法格式如下:{<值序號>:<格式控制標記>}格式控制標記包括<填充>、<對齊>、<寬度>、<,>、<.精度>、<類型>這六個字段,這些字段都是可選的,可以組合使用。3.3.2使用format()方法格式化字符串(1)<填充>字段是一個字符,默認使用空格填充。(2)<對齊>字段分別使用<、>和^三個符號表示左對齊、右對齊和居中對齊。(3)<寬度>字段用于指定值轉(zhuǎn)換字符串后字符串的寬度,如果設定的寬度值比字符串的實際長度小,則使用字符串的實際長度,否則就使用設定的寬度值。words="design"print("{:10}".format(words))#左對齊,填充空格至寬度為10print("{:>10}".format(words))#右對齊,填充空格至寬度為10print("{:@^10}".format(words))#居中對齊,填充@至寬度為10print("{:@^1}".format(words))#寬度小于words的實際長度designdesign@@design@@design運行結(jié)果3.3.2使用format()方法格式化字符串(4)<,>字段用于顯示數(shù)字類型的千位分隔符。

words=31415926print("{0:,}".format(words))#顯示千位分隔符運行代碼,結(jié)果如下所示。31,415,9263.3.2使用format()方法格式化字符串(5)<.精度>字段以小數(shù)點開頭,適用于浮點數(shù)和字符串,如果值是浮點數(shù),則精度表示小數(shù)部分輸出的有效位數(shù);如果值是字符串,精度表示輸出字符串的最大長度。

運行代碼,結(jié)果如下所示。words=3.1415926print("{:.5f}".format(words))#輸出浮點數(shù),保留5位小數(shù)words="design"print("{:.5}".format(words))#字符串的長度為53.14159desig3.3.2使用format()方法格式化字符串(6)<類型>字段用于控制整型和浮點型的值的格式規(guī)則。c:輸出整型對應的Unicode字符;d:輸出整型的十進制形式;o:輸出整型的八進制形式;x:輸出整型的十六進制形式;e:輸出浮點數(shù)對應的小寫字母e的指數(shù)形式;E:輸出浮點數(shù)對應的大寫字母E的指數(shù)形式;f:輸出浮點數(shù)的標準形式;%:輸出浮點數(shù)的百分比形式。針對整型的輸出格式針對浮點型的輸出格式3.3.2使用format()方法格式化字符串(6)<類型>字段用于控制整型和浮點型的值的格式規(guī)則。整型和浮點型輸出格式的示例如下:print("{:c}".format(97))

#輸出97對應的Unicode字符print("{:x}".format(11))#輸出十六進制形式的整數(shù)print("{:E}".format(1568.736))#輸出科學計數(shù)法形式的浮點數(shù)print("{:%}".format(0.80))#輸出浮點數(shù)的百分比形式ab1.568736E+0380.000000%運行結(jié)果3.3.3使用f-string格式化字符串f-string提供了一種更為簡潔的格式化字符串的方式,它在形式上以f或F引領字符串,在字符串中使用“{變量名}”標明被替換的真實值所在位置。f"{變量名}"或F"{變量名}"使用f-string格式化字符串,示例如下:name="小明"age=18format_string=f'我叫{name},今年{age}歲了'print(format_string)我叫小明,今年18歲了代碼運行結(jié)果:實例:制作高鐵名片3.43.4實例:制作高鐵名片近10年來,我國高鐵秉持“核心技術必須要把握在自己手里”的發(fā)展理念,實現(xiàn)了由“追趕者”到“領跑者”的角色轉(zhuǎn)換,在新時代跑出了中國速度,更創(chuàng)造了中國奇跡,成為代表中國形象的“亮麗名片”。3.4實例:制作高鐵名片2008年8月,我國第一條350公里/小時的高速鐵路—京津城際鐵路開通運營,此后高鐵在我國得到了飛速發(fā)展。2017年6月,以“復興號”命名的標準動車組成功研制生產(chǎn)并上線運營,標志著我國鐵路技術裝備達到了領跑世界的先進水平。2022年復興號智能動車組實現(xiàn)時速350公里自動駕駛。3.4實例:制作高鐵名片盡管我國高鐵起步較晚,但經(jīng)過幾代鐵路人接續(xù)奮斗,實現(xiàn)了從無到有、從追趕到并跑、再到領跑的歷史性變化,成功建設了世界上規(guī)模最大、現(xiàn)代化水平最高的高速鐵路網(wǎng)。放眼整個大地,我國高鐵跨越大江大河,穿越崇山峻嶺,通達四面八方,從林海雪原到江南水鄉(xiāng),從大漠戈壁到東海之濱,改寫著整個我國社會的時空格局,也提供著助力世界發(fā)展的中國智慧。3.4實例:制作高鐵名片本實例要求用戶輸入的型號、外號、動力來源、運營速度、投用時間這些基本信息,每個信息之間用“|”進行分隔,套用統(tǒng)一格式的模板制作成一張高鐵名片。高鐵名片模板的格式如下:3.4實例:制作高鐵名片本實例的實現(xiàn)思路分成以下兩步:(1)通過input()函數(shù)獲取復興號電力動車組的基本信息,并使用變量保存基本信息;(2)通過f-string將占位符標注到指定的位置。字符串運算符3.53.5字符串運算符Python中有些運算符適用于字符串,以便對字符串執(zhí)行一些簡單的操作。運算符功能說明+連接運算符兩側(cè)的字符串,返回一個連接后的新字符串*復制指定次數(shù)的字符串,返回一個復制后的新字符串>,<,==,!=,>=,<=按照ASCII值的大小比較字符串里面的字符in,notin檢測字符串中是否存在或不存在某個子串3.5字符串運算符下面是字符串操作符的部分示例,具體如下:result_one='寶劍鋒從磨礪出'+','+'梅花香自苦寒來’print(result_one)result_two='加油!'*3print(result_two)result_thr='Python'>='python'print(result_thr)result_fou='梅花'in'梅花香自苦寒來’print(result_fou)寶劍鋒從磨礪出,梅花香自苦寒來加油!加油!加油!FalseTrue運行結(jié)果如下:3.5字符串運算符值得一提的是,雖然通過“+”運算符可以連接多個字符串,但是效率非常低,這是因為Python中字符串屬于不可變類型,在不斷連接字符串的時候會生成新字符串,每生成一個新字符串就需要申請一次內(nèi)存空間,內(nèi)存操作過于頻繁。因此Python不建議使用“+”運算符連接字符串,后續(xù)3.7節(jié)會講到一些其他的字符串連接方法。字符串處理函數(shù)3.63.6字符串處理函數(shù)Python針對字符串提供了一些內(nèi)置函數(shù),使用這些內(nèi)置函數(shù)可以便捷地對字符串進行處理。函數(shù)功能說明len()返回字符串的長度,或返回其他組合數(shù)據(jù)類型的元素個數(shù)ord()返回單字符對應的ASCII值3.6字符串處理函數(shù)words_one="敏而好學,不恥下問"word_length=len(words_one)print(word_length)words_two="人生苦短,我用Python"word_length=len(words_two)#計算字符串的長度print(word_length)word='a'print(ord(word))#返回單字符的ASCII值使用函數(shù)處理字符串的示例代碼如下:字符串處理方法3.73.7.1字符串大小寫轉(zhuǎn)換的方法函數(shù)功能說明upper()將字符串中的字母全部轉(zhuǎn)換為大寫字母,返回轉(zhuǎn)換后的新字符串lower()將字符串中的字母全部轉(zhuǎn)換為小寫字母,返回轉(zhuǎn)換后的新字符串capitalize()將字符串中的首字母轉(zhuǎn)換為大寫形式,其余字母轉(zhuǎn)換為小寫形式,返回轉(zhuǎn)換后的新字符串title()將字符串中每個單詞的首字母轉(zhuǎn)換為大寫形式,其余字母轉(zhuǎn)換為小寫形式,返回轉(zhuǎn)換后的新字符串在一些特定情況下會對英文單詞的大小寫形式有著特殊的要求。例如,專有名詞的簡稱必須是全字母大寫,如CBA、CCTV等。Python提供了一些用于大小寫轉(zhuǎn)換的方法,具體如下:

3.7.1字符串大小寫轉(zhuǎn)換的方法字符串的大小寫轉(zhuǎn)換方法的使用示例:string='interestIStheBESTteacher'upper_str=string.upper()#所有字母轉(zhuǎn)換為大寫字母lower_str=string.lower()#所有字母轉(zhuǎn)換為小寫字母cap_str=string.capitalize()#首字母轉(zhuǎn)換為大寫字母#每個單詞的首字母轉(zhuǎn)換為大寫字母,其余字母轉(zhuǎn)換成小寫字母title_str=string.title()print(f'全部轉(zhuǎn)換為大寫字母:{upper_str}')print(f'全部轉(zhuǎn)換為小寫字母:{lower_str}')print(f'首字母轉(zhuǎn)換為大寫字母:{cap_str}')print(f'單詞首字母轉(zhuǎn)換為大寫字母:{title_str}')3.7.2查找與替換字符串的方法1.

find()方法find()方法用于查找字符串中是否包含子串,既可以在整個字符串中查找,也可以在指定范圍內(nèi)查找。若找到子串則返回子串首次出現(xiàn)的索引,否則返回-1。find(sub,start=None,end=None)words='與其臨淵羨魚,不如退而結(jié)網(wǎng)。'result_one=words.find('魚’)print(result_one)result_two=words.find('魚',6)print(result_two)示例代碼:3.7.2查找與替換字符串的方法2.

replace()方法replace()方法用于將當前字符串中的指定子串替換成新的子串,可以指定替代次數(shù),并返回替換后的新字符串。replace(old,new,count=-1)string='AllthingsAredifficultbeforetheyAreeasy.'new_string=string.replace('Are','are')#不指定替換次數(shù)print(new_string)new_string=string.replace('Are','are',1)#指定替換次數(shù)print(new_string)示例代碼:3.7.3分割與拼接字符串的方法split()方法用于根據(jù)指定分隔符對字符串進行分割,分割后返回一個列表,該列表中保存了多個字符串。split(sep=None,maxsplit=-1)參數(shù)sep表示分隔符,默認值為空格,也可被設置為其他字符,例如空格、換行(\n)、制表符(\t)等;參數(shù)maxsplit表示分割的次數(shù),默認值是-1,代表不限制分割次數(shù)。1.

split()方法3.7.3分割與拼接字符串的方法分割字符串的示例如下:string='AllthingsAredifficultbeforetheyAreeasy.'new_str=string.split()#根據(jù)空格分割字符串print(new_str)new_str=string.split(sep='A')#根據(jù)字符'A'分割字符串print(new_str)#根據(jù)字符'A'分割字符串,分割兩次new_

溫馨提示

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

評論

0/150

提交評論