? ? ①概念:僅保存一份相同且不可變字符串的方法,不同的值被存放在字符串的駐留池中,Python的駐留機(jī)制對(duì)相同的字符串只保留一份拷貝,后續(xù)創(chuàng)建相同字符串時(shí),不會(huì)開辟新空間,而是把該字符串的地址付給新創(chuàng)建的變量。
? ? ②駐留機(jī)制的幾種情況:
?? ?? ? *字符串的長(zhǎng)度為0或1時(shí)
?? ?? ? *符合標(biāo)識(shí)符的字符串。如字母、數(shù)字、下劃線
?? ?? ? *字符串只在編譯時(shí)進(jìn)行駐留,而非運(yùn)行時(shí)。
a='abc'
b='a'+'bc'
c=''.join(['ab','c'])
#結(jié)果為a is b 為True;b is c為False
?? ?? ? *[-5,256]之間的整數(shù)
? ? ③sys中的intern方法強(qiáng)制2個(gè)字符串指向同一個(gè)對(duì)象
import sys
a=sys.intern(b)
? ? ④PyCharm會(huì)對(duì)字符串進(jìn)行優(yōu)化處理。如兩個(gè)'abc%'會(huì)被認(rèn)為一個(gè)字符串
2.字符串的查詢操作

3.字符串大小寫的轉(zhuǎn)化

4.字符串的對(duì)齊

5.字符串的劈分

6.字符串的判斷

7.字符串的替換

8.字符串的比較
? ? ①運(yùn)算符:>,>=,<,<=,==,!=
? ? ②比較規(guī)則:首先比較兩個(gè)字符串中第一個(gè)字符,如果相等則比較下一個(gè),依次比較下去,直到兩個(gè)字符串不相等時(shí),其比較結(jié)果就是兩個(gè)字符串的比較結(jié)果,字符串的后續(xù)字符不再被比較。
? ? ③比較原理:兩個(gè)字符進(jìn)行比較是,比較的是其ordinal value(原始值),調(diào)用內(nèi)置函數(shù)ord可以得到指定字符的原始值。與內(nèi)置函數(shù)ord對(duì)應(yīng)的是內(nèi)置函數(shù)chr,調(diào)用內(nèi)置函數(shù)chr時(shí)指定ordinal value可以得到對(duì)應(yīng)的字符。
9.格式化字符串
? ? ①%作占位符:%s字符串,%i或%d整數(shù),%f浮點(diǎn)數(shù)。
?? ??? ?語法:"我的名字叫:%s,今年%d歲了" %(name,age)
? ? ②{}作占位符:'我的名字叫{0},今年{1}歲了'.format(name,age)
? ? ③f-string:print(f'我叫{name},今年{age}歲了')
print('{0:.3}'.format(3.1415926))? #.3表示的是一共3位小數(shù)
print('{:.3f}'.format(3.1415926))? #.3f表示是三位小數(shù)
print(':10.3f'.format(3.1415926))? #同時(shí)設(shè)置寬度和精度,一共是10位,3位是小數(shù)
10.字符串的編碼與解碼
? ? ①編碼:s.encode(encoding='GBK')
? ? ②解碼:s.decode(encoding='GBK')
? ? ③在GBK這種編碼中,一個(gè)中文占兩個(gè)字節(jié),在utf-8中一個(gè)中文字符占三個(gè)字節(jié)
11.去除空白
????①strip():去除字符串兩邊的空白
? ? ②lstrip():去除左側(cè)空白
? ? ③rstrip():去除右側(cè)空白