關(guān)于Python中字符串的各種操作
1、字符串拼接
通過(guò)+
運(yùn)算符
現(xiàn)有字符串碼農(nóng)飛哥好,,要求將字符串碼農(nóng)飛哥牛逼拼接到其后面,生成新的字符串碼農(nóng)飛哥好,碼農(nóng)飛哥牛逼
舉個(gè)例子:
str6 = '碼農(nóng)飛哥好,' # 使用+ 運(yùn)算符號(hào) print('+運(yùn)算符拼接的結(jié)果=',(str6 + '碼農(nóng)飛哥牛逼'))
運(yùn)行結(jié)果是:
+運(yùn)算符拼接的結(jié)果= 碼農(nóng)飛哥好,碼農(nóng)飛哥牛逼
2、字符串截?。ㄗ址衅?/h3>
切片操作是訪問(wèn)字符串的另一種方式,它可以訪問(wèn)一定范圍內(nèi)的元素,通過(guò)切片操作,可以生成一個(gè)新的字符串。切片操作的語(yǔ)法格式是:
sname[start : end : step]
各個(gè)參數(shù)的含義分別是:
sname:
表示字符串的名稱(chēng)start:
表示切片的開(kāi)始索引位置(包括該位置),此參數(shù)也可以不指定,不指定的情況下會(huì)默認(rèn)為0,也就是從序列的開(kāi)頭開(kāi)始切片。end:
表示切片的結(jié)束索引位置(不包括該位置),如果不指定,則默認(rèn)為序列的長(zhǎng)度。step:
表示步長(zhǎng),即在切片過(guò)程中,隔幾個(gè)存儲(chǔ)位置(包括當(dāng)前位置)取一次元素,也就是說(shuō),如果step的值大于1,比如step為3時(shí),則在切片取元素時(shí),會(huì)隔2個(gè)位置去取下一個(gè)元素。
還是舉個(gè)栗子說(shuō)明下吧:
str1='好好學(xué)習(xí),天天向上' # 取出索引下標(biāo)為7的值 print(str1[7]) # 從下標(biāo)0開(kāi)始取值,一直取到下標(biāo)為7(不包括)的索引值 print(str1[0:7]) # 從下標(biāo)1開(kāi)始取值,一直取到下標(biāo)為4(不包括)的索引值,因?yàn)閟tep等于2,所以會(huì)隔1個(gè)元素取值 print(str1[1:4:2]) # 取出最后一個(gè)元素 print(str1[-1]) # 從下標(biāo)-9開(kāi)始取值,一直取到下標(biāo)為-2(不包括)的索引值 print(str1[-9:-2])
運(yùn)行的結(jié)果是:
向 好好學(xué)習(xí),天天 好習(xí) 上 好好學(xué)習(xí),天天
3、分割字符串
Python提供了split()方法用于分割字符串,split() 方法可以實(shí)現(xiàn)將一個(gè)字符串按照指定的分隔符切分成多個(gè)子串,這些子串會(huì)被保存到列表中(不包含分隔符),作為方法的返回值反饋回來(lái)。該方法的基本語(yǔ)法格式如下:
str.split(sep,maxsplit)
此方法中各部分參數(shù)的含義分別是:
str:
表示要進(jìn)行分割的字符串sep:
用于指定分隔符,可以包含多個(gè)字符,此參數(shù)默認(rèn)為None,表示所有空字符,包括空格,換行符"\n"、制表符"\t"等maxsplit:
可選參數(shù),用于指定分割的次數(shù),最后列表中子串的個(gè)數(shù)最多為maxsplit+1,如果不指定或者指定為-1,則表示分割次數(shù)沒(méi)有限制。
在 split 方法中,如果不指定 sep 參數(shù),那么也不能指定 maxsplit 參數(shù)。
舉例說(shuō)明下:
str = 'https://feige.blog.csdn.net/' print('不指定分割次數(shù)', str.split('.')) print('指定分割次數(shù)為2次',str.split('.',2))
運(yùn)行結(jié)果是:
不指定分割次數(shù) ['https://feige', 'blog', 'csdn', 'net/'] 指定分割次數(shù)為2次 ['https://feige', 'blog', 'csdn.net/']
4、合并字符串
合并字符串與split的作用剛剛相反,Python提供了join() 方法來(lái)將列表(或元組)中包含的多個(gè)字符串連接成一個(gè)字符串。其語(yǔ)法結(jié)構(gòu)是:
newstr = str.join(iterable)
此方法各部分的參數(shù)含義是:
newstr:
表示合并后生成的新字符串str:
用于指定合并時(shí)的分隔符iterable:
做合并操作的源字符串?dāng)?shù)據(jù),允許以列表、元組等形式提供。
依然是舉例說(shuō)明:
list = ['碼農(nóng)飛哥', '好好學(xué)習(xí)', '非常棒'] print('通過(guò).來(lái)拼接', '.'.join(list)) print('通過(guò)-來(lái)拼接', '-'.join(list))
運(yùn)行結(jié)果是:
通過(guò).來(lái)拼接 碼農(nóng)飛哥.好好學(xué)習(xí).非常棒 通過(guò)-來(lái)拼接 碼農(nóng)飛哥-好好學(xué)習(xí)-非常棒
5、統(tǒng)計(jì)字符串出現(xiàn)的次數(shù)
count()方法用于檢索指定字符串在另一字符串中出現(xiàn)的次數(shù),如果檢索的字符串不存在,則返回0,否則返回出現(xiàn)的次數(shù)。其語(yǔ)法結(jié)構(gòu)是:
str.count(sub[,start[,end]])
此方法各部分參數(shù)的含義是:
str:
表示原字符串sub:
表示要檢索的字符串.start
: 指定檢索的起始位置,也就是從什么位置開(kāi)始檢測(cè),如果不指定,默認(rèn)從頭開(kāi)始檢索。end
: 指定檢索的終止位置,如果不指定,則表示一直檢索到結(jié)尾
舉個(gè)例子說(shuō)明:
str = 'https://feige.blog.csdn.net/' print('統(tǒng)計(jì).出現(xiàn)的次數(shù)', str.count('.')) print('從1位置到倒數(shù)第五個(gè)位置統(tǒng)計(jì).出現(xiàn)的次數(shù)', str.count('.', 1, -5))
運(yùn)行結(jié)果是:
統(tǒng)計(jì).出現(xiàn)的次數(shù) 3 從1位置到倒數(shù)第6個(gè)位置統(tǒng)計(jì).出現(xiàn)的次數(shù) 2
6、檢測(cè)字符串是否包含某子串
Python提供find方法,用于檢索字符串中是否包含目標(biāo)字符串,如果包含,則返回第一次出現(xiàn)該字符串的索引,反之,則返回-1。其語(yǔ)法結(jié)構(gòu)是:
str.find(sub[,start[,end]])
此方法各參數(shù)的含義是:
str:
表示原字符串sub:
表示要檢索的目標(biāo)字符串start
: 表示開(kāi)始檢索的起始位置,如果不指定,則默認(rèn)從頭開(kāi)始檢索end
: 表示結(jié)束檢索的結(jié)束位置,如果不指定,則默認(rèn)一直檢索到結(jié)尾。
Python還提供了rfind()方法,與find()方法最大的不同在于,rfind()是從字符串右邊開(kāi)始檢索。
依然是舉例說(shuō)明:
str = '碼農(nóng)飛哥' print('檢索是否包含字符串"飛哥"', str.find('飛哥')) print("檢索是否包含字符串'你好'", str.find('你好'))
運(yùn)行結(jié)果是:
檢索是否包含字符串"飛哥" 2 檢索是否包含字符串'你好' -1
Python還提供了indext()方法檢測(cè)字符串中是否包含某子串,方法的參數(shù)與find方法相同,唯一不同之處在于當(dāng)指定的字符串不存在時(shí),index()方法會(huì)拋出異常。在此就不在贅述了。
7、字符串對(duì)齊方法
Python str提供了3種可用來(lái)進(jìn)行文本對(duì)齊的方法,分別是ljust(),rjust()和center()方法
(1)ljust()用于向指定字符串的右側(cè)填充指定字符,從而達(dá)到左對(duì)齊文本的目的,其語(yǔ)法結(jié)構(gòu)是:
S.ljust(width[, fillchar])
此方法中各個(gè)參數(shù)的含義是:
S
: 表示要進(jìn)行填充的字符串width
: 表示包括S本身長(zhǎng)度在內(nèi),字符串要占的總長(zhǎng)度fillchar
: 作為可選參數(shù),用來(lái)指定填充字符串時(shí)所用的字符,默認(rèn)情況使用空格。
(2)rjust() 方法是向字符串的左側(cè)填充指定字符,從而達(dá)到右對(duì)齊文本的目的。
(3)center()方法用于讓文本居中,而不是左對(duì)齊或右對(duì)齊
舉個(gè)例子說(shuō)明下:
str1 = 'https://feige.blog.csdn.net/' str2 = 'https://www.baidu.com/' print("通過(guò)-實(shí)現(xiàn)左對(duì)齊", str1.ljust(30, '-')) print("通過(guò)-實(shí)現(xiàn)左對(duì)齊", str2.ljust(30, '-')) print("通過(guò)-實(shí)現(xiàn)右對(duì)齊", str1.rjust(30, '-')) print("通過(guò)-實(shí)現(xiàn)右對(duì)齊", str2.rjust(30, '-')) print("通過(guò)-實(shí)現(xiàn)居中對(duì)齊", str1.center(30, '-')) print("通過(guò)-實(shí)現(xiàn)居中對(duì)齊", str2.center(30, '-'))
運(yùn)行結(jié)果是:
通過(guò)-實(shí)現(xiàn)左對(duì)齊 https://feige.blog.csdn.net/-- 通過(guò)-實(shí)現(xiàn)左對(duì)齊 https://www.baidu.com/-------- 通過(guò)-實(shí)現(xiàn)右對(duì)齊 --https://feige.blog.csdn.net/ 通過(guò)-實(shí)現(xiàn)右對(duì)齊 --------https://www.baidu.com/ 通過(guò)-實(shí)現(xiàn)居中對(duì)齊 -https://feige.blog.csdn.net/- 通過(guò)-實(shí)現(xiàn)居中對(duì)齊 ----https://www.baidu.com/----
8、檢索字符串是否以指定字符串開(kāi)頭(startswith())
startswith()方法用于檢索字符串是否以指定字符串開(kāi)頭,如果是返回True;反之返回False。其語(yǔ)法結(jié)構(gòu)是:
str.startswith(sub[,start[,end]])
此方法各個(gè)參數(shù)的含義是:
str
: 表示原字符串sub
: 要檢索的子串‘start
: 指定檢索開(kāi)始的起始位置索引,如果不指定,則默認(rèn)從頭開(kāi)始檢索end
: 指定檢索的結(jié)束位置索引,如果不指定,則默認(rèn)一直檢索到結(jié)束。
舉個(gè)栗子說(shuō)明下:
str1 = 'https://feige.blog.csdn.net/' print('是否是以https開(kāi)頭', str1.startswith('https')) print('是否是以feige開(kāi)頭', str1.startswith('feige', 0, 20))
運(yùn)行結(jié)果是:
是否是以https開(kāi)頭 True 是否是以feige開(kāi)頭 False
9、檢索字符串是否以指定字符串結(jié)尾(endswith())
endswith()方法用于檢索字符串是否以指定字符串結(jié)尾,如果是則返回True,反之則返回False。其語(yǔ)法結(jié)構(gòu)是:
str.endswith(sub[,start[,end]])
此方法各個(gè)參數(shù)的含義與startswith方法相同,再此就不在贅述了。
10、字符串大小寫(xiě)轉(zhuǎn)換(3種)函數(shù)及用法
Python中提供了3種方法用于字符串大小寫(xiě)轉(zhuǎn)換
title()
方法用于將字符串中每個(gè)單詞的首字母轉(zhuǎn)成大寫(xiě),其他字母全部轉(zhuǎn)為小寫(xiě)。轉(zhuǎn)換完成后,此方法會(huì)返回轉(zhuǎn)換得到的字符串。如果字符串中沒(méi)有需要被轉(zhuǎn)換的字符,此方法會(huì)將字符串原封不動(dòng)地返回。其語(yǔ)法結(jié)構(gòu)是str.title()lower()
用于將字符串中的所有大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母,轉(zhuǎn)換完成后,該方法會(huì)返回新得到的子串。如果字符串中原本就都是小寫(xiě)字母,則該方法會(huì)返回原字符串。 其語(yǔ)法結(jié)構(gòu)是str.lower()upper()
用于將字符串中的所有小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母,如果轉(zhuǎn)換成功,則返回新字符串;反之,則返回原字符串。其語(yǔ)法結(jié)構(gòu)是:str.upper()。
舉例說(shuō)明下吧:
str = 'feiGe勇敢飛' print('首字母大寫(xiě)', str.title()) print('全部小寫(xiě)', str.lower()) print('全部大寫(xiě)', str.upper())
運(yùn)行結(jié)果是:
首字母大寫(xiě) Feige勇敢飛 全部小寫(xiě) feige勇敢飛 全部大寫(xiě) FEIGE勇敢飛
11、去除字符串中空格(刪除特殊字符)的3種方法
Python中提供了三種方法去除字符串中空格(刪除特殊字符)的3種方法,這里的特殊字符,指的是指表符(\t)、回車(chē)符(\r),換行符(\n)等。
strip():
刪除字符串前后(左右兩側(cè))的空格或特殊字符lstrip():
刪除字符串前面(左邊)的空格或特殊字符rstrip():
刪除字符串后面(右邊)的空格或特殊字符
Python的str是不可變的,因此這三個(gè)方法只是返回字符串前面或者后面空白被刪除之后的副本,并不會(huì)改變字符串本身
舉個(gè)例子說(shuō)明下:
str = '\n碼農(nóng)飛哥勇敢飛 ' print('去除前后空格(特殊字符串)', str.strip()) print('去除左邊空格(特殊字符串)', str.lstrip()) print('去除右邊空格(特殊字符串)', str.rstrip())
運(yùn)行結(jié)果是:
去除前后空格(特殊字符串) 碼農(nóng)飛哥勇敢飛 去除左邊空格(特殊字符串) 碼農(nóng)飛哥勇敢飛 去除右邊空格(特殊字符串) 碼農(nóng)飛哥勇敢飛
12、encode()和decode()方法:字符串編碼轉(zhuǎn)換
最早的字符串編碼是ASCll編碼,它僅僅對(duì)10個(gè)數(shù)字,26個(gè)大小寫(xiě)英文字母以及一些特殊字符進(jìn)行了編碼,ASCII碼最多只能表示256個(gè)字符,每個(gè)字符只需要占用1個(gè)字節(jié)。為了兼容各國(guó)的文字,相繼出現(xiàn)了GBK,GB2312,UTF-8編碼等,UTF-8是國(guó)際通用的編碼格式,它包含了全世界所有國(guó)家需要用到的字符,其規(guī)定英文字符占用1個(gè)字節(jié),中文字符占用3個(gè)字節(jié)。
- encode() 方法為字符串類(lèi)型(str)提供的方法,用于將 str 類(lèi)型轉(zhuǎn)換成 bytes 類(lèi)型,這個(gè)過(guò)程也稱(chēng)為“編碼”。其語(yǔ)法結(jié)構(gòu)是:str.encode([encoding="utf-8"][,errors="strict"])
- 將bytes類(lèi)型的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成str類(lèi)型。這個(gè)過(guò)程也稱(chēng)為"解碼",
其語(yǔ)法結(jié)構(gòu)是:bytes.decode([encoding="utf-8"][,errors="strict"])
舉個(gè)例子說(shuō)明下:
str = '碼農(nóng)飛哥加油' bytes = str.encode() print('編碼', bytes) print('解碼', bytes.decode())
運(yùn)行結(jié)果是:
編碼 b'\xe7\xa0\x81\xe5\x86\x9c\xe9\xa3\x9e\xe5\x93\xa5\xe5\x8a\xa0\xe6\xb2\xb9' 解碼 碼農(nóng)飛哥加油
默認(rèn)的編碼格式是UTF-8,編碼和解碼的格式要相同,不然會(huì)解碼失敗。
13、序列化和反序列化
在實(shí)際工作中我們經(jīng)常要將一個(gè)數(shù)據(jù)對(duì)象序列化成字符串,也會(huì)將一個(gè)字符串反序列化成一個(gè)數(shù)據(jù)對(duì)象。Python自帶的序列化模塊是json模塊。
- json.dumps() 方法是將Python對(duì)象轉(zhuǎn)成字符串
- json.loads()方法是將已編碼的 JSON 字符串解碼為 Python 對(duì)象
舉個(gè)例子說(shuō)明下:
import json dict = {'學(xué)號(hào)': 1001, 'name': "張三", 'score': [{'語(yǔ)文': 90, '數(shù)學(xué)': 100}]} str = json.dumps(dict,ensure_ascii=False) print('序列化成字符串', str, type(str)) dict2 = json.loads(str) print('反序列化成對(duì)象', dict2, type(dict2))
運(yùn)行結(jié)果是:
序列化成字符串 {"name": "張三", "score": [{"數(shù)學(xué)": 100, "語(yǔ)文": 90}], "學(xué)號(hào)": 1001} <class 'str'> 反序列化成對(duì)象 {'name': '張三', 'score': [{'數(shù)學(xué)': 100, '語(yǔ)文': 90}], '學(xué)號(hào)': 1001} <class 'dict'>
到此這篇關(guān)于關(guān)于Python中字符串的各種操作的文章就介紹到這了,更多相關(guān)Python中字符串的各種操作內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。