python123查找指定字符输入m_大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编....
Presentation on theme: "大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材 Python語言 劉 鵬 張 燕 總主編 李肖俊 主編 劉 河 鐘 濤 副主編."— Presentation transcript:
大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材 Python語言 劉 鵬 張 燕 總主編 李肖俊 主編 劉 河 鐘 濤 副主編
第五章 字符串與正則表達(dá)式 5.1 字符串基礎(chǔ) 5.2 字符串方法 5.3 正則表達(dá)式 5.4 實(shí)驗(yàn) 5.5 小結(jié) 習(xí)題
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 字符串常用的表示方式 1、字符串中的字符可以是ASCII字符也可以是其他各種符號(hào)。 2、它常用英文狀態(tài)下的單引號(hào)(’ ’)、雙引號(hào)(” ”)或者三單引號(hào) (’’’ ’’’)、三雙引號(hào)(””” ”””)進(jìn)行表示。
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 轉(zhuǎn)義字符 字符串中還有一種特殊的字符叫做轉(zhuǎn)義字符,轉(zhuǎn)義字符通常用于不能夠直接輸入的各 種特殊字符。Python常用轉(zhuǎn)義字符如表5.1所示: 轉(zhuǎn)義字符 說明 \\ 反斜線 \’ 單引號(hào) \’’ 雙引號(hào) \a 響鈴符 \b 退格符 \f 換頁符 \n 換行符 \r 回車符 \t 水平制表符 \v 垂直制表符 \0 Null,空字符串 \000 以八進(jìn)制表示的ASCII碼對(duì)應(yīng)符 \xhh 以十六進(jìn)制表示的ASCII碼對(duì)應(yīng)符 表5.1用的轉(zhuǎn)義字符
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 字符串的基礎(chǔ)操作包括。求字符串的長度、字符串的連接、字符串的遍歷、字 符串的包含判斷、字符串的索引和切片等。 1、求字符串的長度 字符串的長度是指字符數(shù)組的長度,又可以理解為字符串中的字符個(gè) 數(shù)(空格也算字符),可以用len()函數(shù)查看字符串的長度。如: >>> sample_str1 = 'Jack loves Python' >>> print(len(sample_str1)) #查看字符串長度 運(yùn)行結(jié)果如下: 17
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 2、字符串的連接 字符串的連接是指將多個(gè)字符串連接在一起組成一個(gè)新的字符串。例如: >>> sample_str2 = 'Jack', 'is', 'a', 'Python', 'fan' #字符串用逗號(hào)隔開,組 成元組 >>> print('sample_str2:' , sample_str2 , type(sample_str2)) 運(yùn)行結(jié)果如下: sample_str2: ('Jack', 'is', 'a', 'Python', 'fan') 當(dāng)字符串之間沒有任何連接符時(shí),這些字符串會(huì)直接連接在一起,組成 新的字符串。 >>> sample_str3 = 'Jack''is''a''Python''fan' #字符串間無連接符,默認(rèn)合 并 >>> print('sample_str3: ' , sample_str3) sample_str3: JackisaPythonfan
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 字符串之間用’+’號(hào)連接時(shí),也會(huì)出現(xiàn)同樣的效果,這些字符串將連接在一起,組成一 個(gè)新的字符串。 >>> sample_str4 = 'Jack' + 'is' + 'a' + 'Python' + 'fan' #字符串’+’連接,默認(rèn)合并 >>> print('sample_str4: ' , sample_str4) 運(yùn)行結(jié)果如下: sample_str4: JackisaPythonfan 用字符串與正整數(shù)進(jìn)行乘法運(yùn)算時(shí),相當(dāng)于創(chuàng)建對(duì)應(yīng)次數(shù)的字符串,最后組成一個(gè)新 的字符串。 >>> sample_str5 = 'Jack'*3 #重復(fù)創(chuàng)建相應(yīng)的字符串 >>> print('sample_str5: ', sample_str5) sample_str5: JackJackJack 注意:字符串直接以空格隔開的時(shí)候,該字符串會(huì)組成元組類型。
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 3、字符串的遍歷 通常使用for循環(huán)對(duì)字符串進(jìn)行遍歷。例如: >>> sample_str6 = 'Python' #遍歷字符串 >>> for a in sample_str6: print(a) 運(yùn)行結(jié)果如下: P y t h o n 其中變量a,每次循環(huán)按順序代指字符串里面的一個(gè)字符。
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 4、字符串的包含判斷 字符串是字符的有序集合,因此用in操作來判斷指定的字符是否存在 包含關(guān)系。如: >>> sample_str7 = 'Python' >>> print('a' in sample_str7) #字符串中不存在包含關(guān)系 >>> print('Py' in sample_str7) #字符串中存在包含關(guān)系 運(yùn)行結(jié)果如下: False True
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 5、索引和切片 字符串是一個(gè)有序集合,因此可以通過偏移量實(shí)現(xiàn)索引和切片的操作。在字符 串中字符從左到右的字符索引依次為0, 1, 2, 3,。。。, len()-1,字符從右到左 的索引依次為-1, -2, -3,。。。, -len()。索引其實(shí)簡單來說是指字符串的排列順 序,可以通過索引來查找該順序上的字符。例如: >>> sample_str8 = 'Python' >>> print(sample_str8[0]) #字符串對(duì)應(yīng)的第一個(gè)字符 >>> print(sample_str8[1]) #字符串對(duì)應(yīng)的第二個(gè)字符 >>> print(sample_str8[-1]) #字符串對(duì)應(yīng)的最后一個(gè)字符 >>> print(sample_str8[-2]) #字符串對(duì)應(yīng)的倒數(shù)第二個(gè)字符 運(yùn)行結(jié)果如下: P y n o
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 注意:雖然索引可以獲得該順序上的字符,但是不能夠通過該索引去修改對(duì)應(yīng)的字符。例如: >>> sample_str8[0] = 'b' #修改字符串的第一個(gè)字符 Traceback (most recent call last): #系統(tǒng)正常報(bào)錯(cuò) File "", line 9, in sample_str8[0] = 'b' TypeError: 'str' object does not support item assignment 切片,也叫分片,和元組與列表相似,是指從某一個(gè)索引范圍中獲取連續(xù)的多個(gè)字符(又稱為子 字符)。常用格式如下: stringname[start:end] 這里的stringname是指被切片的字符串,start和end分別指開始和結(jié)束時(shí)字符的索引,其中切片的 最后一個(gè)字符的索引是end-1,這里有一個(gè)訣竅叫:包左不包右。例如: >>> sample_str9 = 'abcdefghijkl' >>> print(sample_str9[0:4]) #獲取索引為0-4之間的字符串,從索引0開始到3為止,不包括索引 為4的字符 運(yùn)行結(jié)果如下: abcd
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 若不指定起始切片的索引位置,默認(rèn)是從0開始;若不指定結(jié)束切片的順序,默認(rèn)是字符串的長度 -1。例如: >>> sample_str10 = 'abcdefg' >>> print("起始不指定", sample_str10[:3]) #獲取索引為0-3之間的字符串,不包括3 >>> print("結(jié)束不指定", sample_str10[3:]) # 從索引3到最后一個(gè)字符,不包括len 運(yùn)行結(jié)果如下: 起始不指定 abc 結(jié)束不指定 defg 默認(rèn)切片的字符串是連續(xù)的,但是也可以通過指定步進(jìn)數(shù)(step)來跳過中間的字符,其中默認(rèn) 的step是1。例如指定步進(jìn)數(shù)為2: >>> sample_str11 = ' ' >>> print('跳2個(gè)字符', sample_str11[1:7:2]) #索引1~7,每2個(gè)字符截取 跳2個(gè)字符 135
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 字符串格式化方法 想要進(jìn)行字符串格式化可以使用format()方法。例如: >>> print('My name is {0}, and I am {1} '.format('Jack', 9)) #函數(shù)格式化 運(yùn)行結(jié)果如下: My name is Jack, and I am 9
5.1 字符串基礎(chǔ) 字符串常見的格式化符號(hào)如表5. 2 表5.2 Python格式控制符號(hào) %s
第五章 字符串與正則表達(dá)式 字符串常見的格式化符號(hào)如表5. 2 格式控制符 說明 %s 字符串(采用str()的顯示)或其他任何對(duì)象 %r 與%s相似(采用repr()的顯示) %c 單個(gè)字符 %b 參數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù) %d 參數(shù)轉(zhuǎn)換成十進(jìn)制整數(shù) %i %o 參數(shù)轉(zhuǎn)換成八進(jìn)制整數(shù) %u %x 參數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù),字母小寫 %X 參數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù),字母大寫 %e.E 按科學(xué)計(jì)數(shù)法格式轉(zhuǎn)換成浮點(diǎn)數(shù) %f.F 按定點(diǎn)小數(shù)格式轉(zhuǎn)換成浮點(diǎn)數(shù) %g.G 按定點(diǎn)小數(shù)格式轉(zhuǎn)換成浮點(diǎn)數(shù),與%f.F不同 表5.2 Python格式控制符號(hào)
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 字符串的格式化通常有兩種方式,除了之前提到的用函數(shù)的形式進(jìn)行格式化以外,還 可以用字符串格式化表達(dá)式來進(jìn)行格式,常用%進(jìn)行表示,其中%前面是需要格式化 的字符串,而%后面就是需要填充的實(shí)際參數(shù),這個(gè)實(shí)際參數(shù)其本質(zhì)就是元組。%也 可以理解為占位符。例如: >>> print('My name is %s, and I am %d'%('Jack', 9)) #表達(dá)式格式化 運(yùn)行結(jié)果如下: My name is Jack, and I am 9 注意:如果想要將后面填充的浮點(diǎn)數(shù)保留兩位小數(shù),可以用%f2表示,同時(shí)會(huì) 對(duì)第三位小數(shù)進(jìn)行四舍五入。例如: >>> print('你花了%.2f元錢'%( )) #浮點(diǎn)數(shù)保留兩個(gè)小數(shù) 你花了20.46元錢
5.1 字符串基礎(chǔ) 第五章 字符串與正則表達(dá)式 字符串的格式化通常有兩種方式,除了之前提到的用函數(shù)的形式進(jìn)行格式化以外,還 可以用字符串格式化表達(dá)式來進(jìn)行格式,常用%進(jìn)行表示,其中%前面是需要格式化 的字符串,而%后面就是需要填充的實(shí)際參數(shù),這個(gè)實(shí)際參數(shù)其本質(zhì)就是元組。%也 可以理解為占位符。例如: >>> print('My name is %s, and I am %d'%('Jack', 9)) #表達(dá)式格式化 運(yùn)行結(jié)果如下: My name is Jack, and I am 9 注意:如果想要將后面填充的浮點(diǎn)數(shù)保留兩位小數(shù),可以用%f2表示,同時(shí)會(huì) 對(duì)第三位小數(shù)進(jìn)行四舍五入。例如: >>> print('你花了%.2f元錢'%( )) #浮點(diǎn)數(shù)保留兩個(gè)小數(shù) 你花了20.46元錢
第五章 字符串與正則表達(dá)式 5.1 字符串基礎(chǔ) 5.2 字符串方法 5.3 正則表達(dá)式 5.4 實(shí)驗(yàn) 5.5 小結(jié) 習(xí)題
5.2 字符串方法 1.str.strip([chars])
第五章 字符串與正則表達(dá)式 字符串是str類型對(duì)象,所以Python內(nèi)置了一系列操作字符串的方法。其中常 用的方法如下: 1.str.strip([chars]) 若方法里面的chars不指定默認(rèn)去掉字符串的首、尾空格或者換行 符,但是如果指定了chars,那么會(huì)刪除首尾的chars例如: >>> sample_fun1 = ' Hello world^#' >>> print(sample_fun1.strip()) #默認(rèn)去掉首尾空格 >>> print(sample_fun1.strip('#')) #指定首尾需要?jiǎng)h除的字符 >>> print(sample_fun1.strip('^#')) 運(yùn)行結(jié)果如下: Hello world^# Hello world^ Hello world
5.2 字符串方法 第五章 字符串與正則表達(dá)式 2.str.count('chars',start,end) 統(tǒng)計(jì)chars字符串或者字符在str中出現(xiàn)的次數(shù),從start順序開始查找 一直到end順序范圍結(jié)束,默認(rèn)是從順序0開始。例如: >>> sample_fun2 = 'abcdabfabbcd' >>> print(sample_fun2.count('ab',2,9)) #統(tǒng)計(jì)字符串出現(xiàn)的次數(shù) 運(yùn)行結(jié)果如下: 2
5.2 字符串方法 4.str.replace(oldstr, newstr,count) 3.str. capitalize()
第五章 字符串與正則表達(dá)式 3.str. capitalize() 將字符串的首字母大寫。例如: >>> sample_fun3 = 'abc' >>> print(sample_fun3.capitalize()) #首字母大寫 運(yùn)行結(jié)果如下: Abc 4.str.replace(oldstr, newstr,count) 用舊的子字符串替換新的子字符串,若不指定count默認(rèn)全部替換。例如: >>> sample_fun4 = 'ab12cd3412cd' >>> print(sample_fun4.replace('12','21')) #不指定替換次數(shù)count >>> print(sample_fun4.replace('12','21',1)) #指定替換次數(shù)count ab21cd3421cd ab21cd3412cd
5.2 字符串方法 第五章 字符串與正則表達(dá)式 5.str.find('str',start,end) 查找并返回子字符在start到end范圍內(nèi)的順序,默認(rèn)范圍是從父字符 串的頭開始到尾結(jié)束,例如: >>> sample_fun5 = ' ' >>> print(sample_fun5.find('5')) #查看子字符串的順序 >>> print(sample_fun5.find('5',1,4)) #指定范圍內(nèi)沒有該字符串默認(rèn) 返回-1 >>> print(sample_fun5.find('1') #多個(gè)字符串返回第一次出現(xiàn)時(shí)候 的順序 運(yùn)行結(jié)果如下:
5.2 字符串方法 第五章 字符串與正則表達(dá)式 6.str.index('str',start,end) 該函數(shù)與find函數(shù)一樣,但是如果在某一個(gè)范圍內(nèi)沒有找到該字符串 的時(shí)候,不再返回-1而是直接報(bào)錯(cuò)。例如: >>> sample_fun6 = ' ' >>> print(sample_fun6.index(7)) #指定范圍內(nèi)沒有找到該字符串會(huì) 報(bào)錯(cuò) 運(yùn)行結(jié)果如下: Traceback (most recent call last): File "D:/python/space/demo py", line 2, in print(sample_fun6.index(7)) #指定范圍內(nèi)沒有找到該字符串會(huì)報(bào) 錯(cuò) TypeError: must be str, not int
5.2 字符串方法 7.str.isalnum() 字符串是由字母或數(shù)字組成則返回true否則返回false。例如:
第五章 字符串與正則表達(dá)式 7.str.isalnum() 字符串是由字母或數(shù)字組成則返回true否則返回false。例如: >>> sample_fun7 = 'abc123' #字符串由字母和數(shù)字組成 >>> sample_fun8 = 'abc' #字符串由字母組成 >>> sample_fun9 = '123' #字符串由數(shù)字組成 >>> sample_fun10 = 'abc12%' #字符串由除了數(shù)字字母以為的字符組 成 print(sample_fun7.isalnum()) print(sample_fun8.isalnum()) print(sample_fun9.isalnum()) print(sample_fun10.isalnum()) 運(yùn)行結(jié)果如下: True False
5.2 字符串方法 第五章 字符串與正則表達(dá)式 8.str.isalpha() 字符串是否全是由字母組成的,是返回true,否則返回false。例如 >>> sample_fun11 = 'abc123' #字符串中不只是有字母 >>> sample_fun12 = 'abc' #字符串中只是有字母 print(sample_fun11.isalpha()) print(sample_fun12.isalpha()) 運(yùn)行結(jié)果如下: False True
5.2 字符串方法 第五章 字符串與正則表達(dá)式 9.str.isdigit() 字符串是否全是由數(shù)字組成,是則返回true,否則返回false。例如: >>> sample_fun13 = 'abc12' #字符串中不只是有數(shù)字 >>> sample_fun14 = '12' #字符串中只是有數(shù)字 print(sample_fun13.isdigit()) print(sample_fun14.isdigit()) 運(yùn)行結(jié)果如下: False True
5.2 字符串方法 第五章 字符串與正則表達(dá)式 10.str.isspace() 字符串是否全是由空格組成的,是則返回true,否則返回false。例 如: >>> sample_fun15 = ' abc' #字符串中不只有空格 >>> sample_fun16 = ' ' #字符串中只有空格 >>> print(sample_fun15.isspace()) >>> print(sample_fun16.isspace()) 運(yùn)行結(jié)果如下: False True
5.2 字符串方法 第五章 字符串與正則表達(dá)式 11.str.islower() 字符串是否全是小寫,是則返回true,否則返回false。例如: >>> sample_fun17 = 'abc' #字符串中的字母全是小寫 >>> sample_fun18 = 'Abcd' #字符串中的字母不只有小寫 >>> print(sample_fun17.islower()) >>> print(sample_fun18.islower()) 運(yùn)行結(jié)果如下: True False
5.2 字符串方法 第五章 字符串與正則表達(dá)式 12.str.isupper() 字符串是否全是大寫,是則返回true,否則返回false。例如: >>> sample_fun19 = 'abCa' #字符串中的字母不全是大寫字母 >>> sample_fun20 = 'ABCA' #字符串中的字母全是大寫字母 >>> print(sample_fun19.isupper()) >>> print(sample_fun20.isupper()) 運(yùn)行結(jié)果如下: False True
5.2 字符串方法 第五章 字符串與正則表達(dá)式 13.str.istitle() 字符串首字母是否是大寫,是則返回true,否則返回false。例如: >>> sample_fun21 = 'Abc' #字符串首字母大寫 >>> sample_fun22 = 'aAbc' #字符串首字母不是大寫 >>> print(sample_fun21s.istitle()) >>> print(sample_fun22.istitle()) 運(yùn)行結(jié)果如下: True False
5.2 字符串方法 第五章 字符串與正則表達(dá)式 14.str.low() 將字符串中的字母全部轉(zhuǎn)換成小寫字母。例如: >>> sample_fun23 = 'aAbB' #將字符串中的字母全部轉(zhuǎn)為小寫字 母 >>> print(sample_fun23.lower()) 運(yùn)行結(jié)果如下: aabb 15.str.upper() 將字符串中的字母全部轉(zhuǎn)換成大寫字母。例如: >>> sample_fun24 = 'abcD' #將字符串中的字母全部轉(zhuǎn)為 >>> print(sample_fun24.upper()) ABCD
5.2 字符串方法 第五章 字符串與正則表達(dá)式 16.str.split(sep,maxsplit) 將字符串按照指定的sep字符進(jìn)行分割,maxsplit是指定需要分割的次 數(shù),若不指定sep默認(rèn)是分割空格。例如: >>> sample_fun25 = 'abacdaef' >>> print(sample_fun25.split('a')) #指定分割字符串 >>> print(sample_fun25.split()) #不指定分割字符串 >>> print(sample_fun25.split('a',1)) #指定分割次數(shù) 運(yùn)行結(jié)果如下: ['', 'b', 'cd', 'ef'] ['abacdaef'] ['', 'bacdaef']
5.2 字符串方法 17.str.startswith(sub[,start[,end]])
第五章 字符串與正則表達(dá)式 17.str.startswith(sub[,start[,end]]) 判斷字符串在指定范圍內(nèi)是否以sub開頭,默認(rèn)范圍是整個(gè)字符串。例如: >>> sample_fun26 = '12abcdef' >>> print(sample_fun26.startswith('12',0,5)) #范圍內(nèi)是否是以該字符開 頭 運(yùn)行結(jié)果如下: True 18.str.endswith(sub[,start[,end]]) 判斷字符串在指定范圍內(nèi)是否是以sub結(jié)尾,默認(rèn)范圍是整個(gè)字符串。例 如: >>> sample_fun27 = 'abcdef12' >>> print(sample_fun27.endswith('12')) #指定范圍內(nèi)是否是以該字符結(jié) 尾
5.2 字符串方法 第五章 字符串與正則表達(dá)式 19.str.partition(sep) 將字符串從sep第一次出現(xiàn)的位置開始分隔成三部分:sep順序前、 sep、sep順序后。最后會(huì)返回出一個(gè)三元數(shù)組,如果沒有找到sep的 時(shí)候,返回字符本身和兩個(gè)空格組成的三元數(shù)組。例如: >>> sample_fun28 = '123456' >>> print(sample_fun28.partition('34')) #指定字符分割,能夠找到該 字符 >>> print(sample_fun28.partition('78')) #指定字符分割,不能夠找到 該字符 運(yùn)行結(jié)果如下: ('12', '34', '56') ('123456', '', '')
5.2 字符串方法 第五章 字符串與正則表達(dá)式 20.str.rpartition(sep) 該函數(shù)與partition(sep)函數(shù)一致,但是sep不再是第一次出現(xiàn)的順 序,而是最后一次出現(xiàn)的順序。例如: >>> sample_fun29 = ' ' >>> print(sample_fun29.rpartition('34')) #指定字符最后一次的位置進(jìn) 行分割 運(yùn)行結(jié)果如下: ('123456', '34', '')
第五章 字符串與正則表達(dá)式 5.1 字符串基礎(chǔ) 5.2 字符串方法 5.3 正則表達(dá)式 5.4 實(shí)驗(yàn) 5.5 小結(jié) 習(xí)題
5.3 正則表達(dá)式 第五章 字符串與正則表達(dá)式 5.3.1 認(rèn)識(shí)正則表達(dá)式 正則表達(dá)式(Regular Expression),此處的“Regular”即是“規(guī) 則”、“規(guī)律”的意思,Regular Expression即“描述某種規(guī)則的表 達(dá)式”,因此它又可稱為正規(guī)表示式、正規(guī)表示法、正規(guī)表達(dá)式、規(guī) 則表達(dá)式、常規(guī)表示法等,在代碼中常常被簡寫為regex、regexp或 RE。正則表達(dá)式使用某些單個(gè)字符串,來描述或匹配某個(gè)句法規(guī)則 的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索或替換 那些符合某個(gè)模式的文本,如下面的表5.3、5.4、5.5、5.6所示。 字符 說明 . 匹配任意1個(gè)字符(除了\n) [ ] 匹配[ ]中列舉的字符\d \d 匹配數(shù)字,即0-9 \D 匹配非數(shù)字,即不是數(shù)字 \s 匹配空白,即空格,Tab鍵 \S 匹配非空白 \w 匹配單詞字符,即a-z.A-Z.0-9._ \W 匹配非單詞字符 表5.3單個(gè)字符匹配
5.3 正則表達(dá)式 5.3.1 認(rèn)識(shí)正則表達(dá)式 表5.4表示數(shù)量的匹配 表5.5 表示邊界的匹配 *
第五章 字符串與正則表達(dá)式 5.3.1 認(rèn)識(shí)正則表達(dá)式 表5.4表示數(shù)量的匹配 字符 說明 * 匹配前?個(gè)字符出現(xiàn)0次或者無限次,即可有可無 + 匹配前?個(gè)字符出現(xiàn)1次或者無限次,即至少有1次 ? 匹配前?個(gè)字符出現(xiàn)1次或者0次,即要么有1次,要么沒有 {m} 匹配前?個(gè)字符出現(xiàn)m次 {m,} 匹配前?個(gè)字符至少出現(xiàn)m次 {m,n} 匹配前?個(gè)字符出現(xiàn)從m到n次 表5.5 表示邊界的匹配 字符 說明 ^ 匹配字符串開頭 $ 匹配字符串結(jié)尾 \b 匹配?個(gè)單詞的邊界 \B 匹配非單詞邊界
5.3 正則表達(dá)式 5.3.1 認(rèn)識(shí)正則表達(dá)式 表5.6 匹配分組 | 匹配左右任意?個(gè)表達(dá)式 (ab) 將括號(hào)中字符作為?個(gè)分組 \num
第五章 字符串與正則表達(dá)式 5.3.1 認(rèn)識(shí)正則表達(dá)式 字符 說明 | 匹配左右任意?個(gè)表達(dá)式 (ab) 將括號(hào)中字符作為?個(gè)分組 \num 引用分組num匹配到的字符串 (?P) 分組起別名 (?P=name) 引用別名為name分組匹配到的字符串 表5.6 匹配分組
5.3 正則表達(dá)式 第五章 字符串與正則表達(dá)式 5.3.2re模塊 在Python中需要通過正則表達(dá)式對(duì)字符串進(jìn)行匹配的時(shí)候,可以導(dǎo)入 ?個(gè)庫(模塊),名字為re,它提供了對(duì)正則表達(dá)式操作所需的方法, 如表5.7。 方法 說明 re.match(pattern,string flags) 從字符串的開始匹配一個(gè)匹配對(duì)象, 例如匹配第一個(gè)單詞 re.search(pattern,string flags) 在字符串中查找匹配的對(duì)象,找到第一個(gè)后就返回,如果沒有找到就返回None re.sub(pattern,repl,string count) 替換掉字符中的匹配項(xiàng) re.split(r',',text) 分割字符 re.findall(pattern,string flags) 獲取字符串中所有匹配的對(duì)象 re.compile(pattern,flags) 創(chuàng)建模式對(duì)象 表5.7 re模塊常見的方法
5.3 正則表達(dá)式 第五章 字符串與正則表達(dá)式 5.3.3re.match()方法 re.match()是用來進(jìn)行正則匹配檢查的方法,若字符串匹配正則表達(dá) 式,則match()方法返回匹配對(duì)象(Match Object),否則返回None (注意不是空字符串"")。 匹配對(duì)象Macth Object具有g(shù)roup()方法,用來返回字符串的匹配部分。 常用格式為: re.match(pattern,string, flags=0) 這里的pattern格式為('正則表達(dá)式', '匹配的字符串')例如: >>> import re #導(dǎo)入re包 >>> sample_result1 = re.match('Python','Python12') #從頭查找匹配 字符串 >>> print(sample_result1.group()) #輸出匹配的字符串 運(yùn)行結(jié)果如下: Python
5.3 正則表達(dá)式 第五章 字符串與正則表達(dá)式 5.3.4re.search()方法 re.search()方法和re.match()方法相似,也是用來對(duì)正則匹配檢查的 方法但不同的是search()方法是在字符串的頭開始一直到尾進(jìn)行查找, 若正則表達(dá)式與字符串匹配成功,那么就返回匹配對(duì)象,否則返回 None。例如: >>> import re >>> sample_result2 = re.search('Python','354Python12') #依次匹配 字符串 >>> print(sample_result2.group()) 運(yùn)行結(jié)果如下: Python
5.3 正則表達(dá)式 第五章 字符串與正則表達(dá)式 5.3.4re.search()方法與re.match()方法的區(qū)別 雖然re.match()和re.search()方法都是指定的正則表達(dá)式與字符串進(jìn)行匹配, 但是 re.match()是從字符串的開始位置進(jìn)行匹配,若匹配成功,則返回匹配 對(duì)象,否則返回None。而re.search()方法卻是從字符串的全局進(jìn)行掃描,若 匹配成功就返回匹配對(duì)象,否則返回None。例如: >>> import re >>> sample_result3 = re.match('abc','abcdef1234') #match只能夠匹配頭 >>> sample_result4 = re.match('1234','abcdef1234') >>> print(sample_result3.group()) >>> print(sample_result4)
5.3 正則表達(dá)式 第五章 字符串與正則表達(dá)式 5.3.4re.search()方法與re.match()方法的區(qū)別 >>> sample_result5 = re.search('abc','abcdef1234') #search匹配全體字符 >>> sample_result6 = re.search('1234','abcdef1234') >>> print(sample_result5.group()) >>> print(sample_result6.group()) 運(yùn)行結(jié)果如下: abc None 1234
第五章 字符串與正則表達(dá)式 5.1 字符串基礎(chǔ) 5.2 字符串方法 5.3 正則表達(dá)式 5.4 實(shí)驗(yàn) 5.5 小結(jié) 習(xí)題
5.4 實(shí)驗(yàn) 第五章 字符串與正則表達(dá)式 5.4.1 使用字符串處理函數(shù) 1.我們常看到自己電腦上的文件路徑如' C:\Windows\Logs\dosvc',請(qǐng)將該 路徑分割為不同的文件夾。 >>> sample_str1 = 'C:\Windows\Logs\dosvc' >>> sample_slipstr = sample_str1.split('\\') #\轉(zhuǎn)義字符要轉(zhuǎn)一次才是本意 >>> print(sample_slipstr) 運(yùn)行結(jié)果如下: ['C:', 'Windows', 'Logs', 'dosvc'] 2.Python的官網(wǎng)是 >>> sample_str2 = ' >>> print(sample_str2.endswith('org')) #從字符串末尾開始查找 True
5.4 實(shí)驗(yàn) 第五章 字符串與正則表達(dá)式 5.4.2 正則表達(dá)式的使用 寫出一個(gè)正則表達(dá)式來匹配是否是手機(jī)號(hào)。 >>> import re #定義一個(gè)正則表達(dá)式 >>> phone_rule = re.compile('1\d{10}') >>> phone_num = input('請(qǐng)輸入一個(gè)手機(jī)號(hào)') #通過規(guī)則去匹配字符串 >>> sample_result3 = phone_rule.search(phone_num) >>> if sample_result3 != None: print('這是一個(gè)手機(jī)號(hào)') else: print('這不是一個(gè)手機(jī)號(hào)') 運(yùn)行結(jié)果如下: 請(qǐng)輸入一個(gè)手機(jī)號(hào) 這是一個(gè)手機(jī)號(hào) Process finished with exit code 0 請(qǐng)輸入一個(gè)手機(jī)號(hào) 這不是一個(gè)手機(jī)號(hào)
5.4 實(shí)驗(yàn) 第五章 字符串與正則表達(dá)式 5.4.3 使用re模塊 用兩種方式寫出一個(gè)正則表達(dá)式匹配字符'Python123'中的'Python'并輸出字符串 'Python'。 >>> import re #導(dǎo)入re包 >>> sample_regu = re.compile('Python') #定義正則表達(dá)式規(guī)則 >>> sample_result4 = sample_regu.match('Python123') #用match方式匹配字符串 >>> print(sample_result4.group()) #用search方式匹配字符串 >>> sample_result5 = sample_regu.search('Python123') >>> print(sample_result5.group())
第五章 字符串與正則表達(dá)式 5.1 字符串基礎(chǔ) 5.2 字符串方法 5.3 正則表達(dá)式 5.4 實(shí)驗(yàn) 5.5 小結(jié) 習(xí)題
5.5 小結(jié) 第五章 字符串與正則表達(dá)式 本章首先講解了Python字符串概念,字符串的基本操作;其次是字符串的格 式化,主要的格式化符號(hào)、格式化元組;還有操作字符串的基本方法,這些 符號(hào)和方法在Python的開發(fā)中會(huì)被經(jīng)常使用到。之后,我們學(xué)習(xí)了正則表達(dá) 式,re模塊和正則表達(dá)式的基本表示符號(hào),這些符號(hào)可以幫助簡化正則表達(dá) 式。 正則表達(dá)式的用途非常廣泛,幾乎任何編程語言都可以使用到它,所以學(xué)好 正則表達(dá)式,對(duì)于提高自己的編程能力有非常重要的作用。
第五章 字符串與正則表達(dá)式 5.1 字符串基礎(chǔ) 5.2 字符串方法 5.3 正則表達(dá)式 5.4 實(shí)驗(yàn) 5.5 小結(jié) 習(xí)題
習(xí)題: 1. 將字符串'abcdefg' 使用函數(shù)的方式進(jìn)行倒敘輸出。
2. 在我們生活中節(jié)假日的問候是必不可少的,請(qǐng)使用字符串格式化的方式寫一個(gè)新年問候語模板。 3. 4. 簡述re模塊中re.match()與re.search()的區(qū)別。
AIRack人工智能實(shí)驗(yàn)平臺(tái) ——一站式的人工智能實(shí)驗(yàn)平臺(tái) DeepRack深度學(xué)習(xí)一體機(jī) ——開箱即用的AI科研平臺(tái) BDRack大數(shù)據(jù)實(shí)驗(yàn)平臺(tái)——一站式的大數(shù)據(jù)實(shí)訓(xùn)平臺(tái)
云創(chuàng)公眾號(hào)推薦 劉鵬看未來 云計(jì)算頭條 中國大數(shù)據(jù) 深度學(xué)習(xí)世界 云創(chuàng)大數(shù)據(jù)訂閱號(hào) 云創(chuàng)大數(shù)據(jù)服務(wù)號(hào) 高校大數(shù)據(jù)與人工智能
微信號(hào):lpoutlook 云計(jì)算頭條 微信號(hào):chinacloudnj 中國大數(shù)據(jù) 微信號(hào):cstorbigdata 深度學(xué)習(xí)世界 微信號(hào):dl-world 云創(chuàng)大數(shù)據(jù)訂閱號(hào) 微信號(hào):cStor_cn 云創(chuàng)大數(shù)據(jù)服務(wù)號(hào) 微信號(hào):cstorfw 高校大數(shù)據(jù)與人工智能 微信號(hào):data_AI
手機(jī)APP推薦 我的PM2.5 隨時(shí)隨地準(zhǔn)確 查看身邊的 PM2.5值 同聲譯 支持26種語言 互譯的實(shí)時(shí)翻 譯軟件 我的南京
云創(chuàng)大數(shù)據(jù)為路 況大數(shù)據(jù)應(yīng)用提 供技術(shù)支持 科技頭條 匯聚前沿資訊 的科技情報(bào)站
網(wǎng)站推薦 萬物云 智能硬件大數(shù)據(jù)免費(fèi)托管平臺(tái) 環(huán)境云 環(huán)境大數(shù)據(jù)開放共享平臺(tái)
感謝聆聽
總結(jié)
以上是生活随笔為你收集整理的python123查找指定字符输入m_大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编....的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate基于单表curd
- 下一篇: (二)Cypher语言常用方法举例