Python/ target=_blank class=infotextkey>Python關于字符串的內容真的不是一般的多,零零碎碎的學很容易疏漏。我花了一晚上認真的整理了一張思維導圖。這里沒法貼思維導圖,所以只好貼文本了,有需要思維導圖的同學關注并私信我,我會發給你。看思維導圖比看文章更容易記憶。
Python字符串知識點總結
字符串創建
- 使用單引號或雙引號
- str方法,str(非字符串參數)可將其他類型轉換成字符串
轉義字符
- n:換行符,新的一行開頭
- r:回車符,移至本行開頭
- t:水平制表符,下一組4個空格的開始處
- b:退格符,回退一個字符
- ': 單引號'
- ": 雙引號''
特殊字符串
- 字符串前加r,表示轉義符不生效,但不能以單數結束,可以\結束
- 字符串前加u,表示以Unicode格式進行編碼,一般用在中文字符串前面,防止亂碼
- 字符串前加b,表示這是一個bytes對象,可以理解為二進制字節串,是比較特殊的字符串
跨越多行的字符
- 三個引號(可嵌套)
- 在每行末尾加
字符串加法,乘法
- 加法將兩個字符串連接,生成新的字符串
- 乘法將字符串重復n次,生成新的字符串
字符串查操作
- 通過索引查找元素,方法同列表:指定索引獲得元素、通過切片獲得元素
- 獲得子串的索引,指的是在字符串中查找子串,返回匹配的第一個字符的索引。
- 方法index、find、rindex、rfind:
字符串中存在多個子串時:
index、find返回第一個子串的索引
rindex,rfind返回最后一個子串的索引。
字符串中不存在子串時:
index,rindex返回ValueError
find,rfind返回-1
字符串是不可變類型,無增刪改
- 字符串的增刪改實質都是創建新的字符串
字符串的比較
- 字符串的比較,比較的是其ASCII值的大小。
ord(),參數是一個字符(可以是中文),返回其ASCII值(int型)
chr(),參數是數字(int型),返回對應的字符
- ==與is在字符串中無差異;==與is在列表中有差異
字符串反轉和截取
- 通過切片方式獲得,例如:
a='abc'
b=a[::-1] # 字符串反轉
c =a[1:3] # 字符串截取,下標從0開始,謹記左開右閉
print(a,b,c)
out:
abc cba bc
使用%作為占位符格式化字符串
- '包含%占位符的字符串' % 實際值 '包含%占位符的字符串' % (實際值1,實際值2……)
- 格式化字符串中的%為普通字符時,需要轉義為 %%
- 占位符%后面可以指定寬度和精度 例如:%6.3f 表示寬度6精度3的浮點數
使用{ }作為占位符格式化字符串
- 例如:
num=3.1415926
print(f'{num:.4f}') # 小數點后取3位,注意是四舍五入的
- 在{}中可以使用冒號來指定數字的表示形式
{:d} 十進制數
{:b} 二進制數
{:x} 十六進制數,小寫表示
{:X} 十六進制數,大寫表示
{:f} 浮點數
{:.2f} 小數點后取2位,四舍五入
{:,} 千位分隔符
- {}中可以指定寬度和精度
{:m.n}數字的表示形式
字符串的大小寫轉換
- 轉化大小寫:
s.upper() 全部轉化為大寫
s.lower() 全部轉化為小寫
s.swapcase() 所有小寫變大寫,所有大寫變小寫
s.capitalize() 字符串首字母大寫
s.title() 所有單詞首字母大寫
- 判斷是否大小寫:
s.isupper() 判斷是否全部為大寫
s.islower() 判斷是否全部為小寫
s.istitle() 判斷是否所有字符首字母大寫
字符串的對齊方式
- 方法center,ljust,rjust, 不指定填充字符,默認為空格 若指定寬度小于字符串長度,則返回字符串本身
s.center(字符串寬度,填充字符)
s.ljust(字符串寬度,填充字符)
s.rjust(字符串寬度,填充字符)
- 方法zfill
s.zfill(字符串寬度) 右對齊,左邊用0填充
字符串的子串替換,方法replace
- s.replace(匹配字符串,目標字符串,最大替換次數),最大替換次數也可不指定,表示無限制
字符串的字符轉換
- 方法maketrans和translate,可以理解為密碼本編碼、解碼。
先用maketrans創建一個加密字典trantab
然后s.translate(trantab)可轉成密文
可以再做個解密字典轉回明文。
str1 = "this is string example wow!"
intab = "aoeiu" # 原字符和目標字符對應
outtab = "12345" # 將a轉1,o轉2等等
trantab = str1.maketrans(intab, outtab) # 加密字典trantab2 = str1.maketrans(outtab, intab) # 解密字典str2 = str1.translate(trantab)str3 = str2.translate(trantab2)print(str2) # th4s 4s str4ng 3x1mpl3 w2w!
print(str3) # this is string example wow!
out:
th4s 4s str4ng 3x1mpl3 w2w!
this is string example wow!
- 還可以用第三個參數指定需要刪除的字符串
str1 = "this is string example wow!"
intab = "aoeiu" # 原字符和目標字符對應
outtab = "12345" # 將a轉1,o轉2等等
trantab = str1.maketrans(intab, outtab,' ')
trantab2 = str1.maketrans(outtab, intab)str2 = str1.translate(trantab)str3 = str2.translate(trantab2)print(str2) # th4s4sstr4ng3x1mpl3w2w!
print(str3) # thisisstringexamplewow!
out:th4s4sstr4ng3x1mpl3w2w!thisisstringexamplewow!
字符串的拆分和合并
- s.split()從左向右尋找,根據拆分符將字符串拆分,分別放入列表;
- s.rsplit()從右向左尋找,根據拆分符將字符串拆分,分別放入列表。
上面2個方法都有參數:(maxsplit=次數,sep='拆分符')
maxsplit=拆分次數
sep='拆分符'
- s.splitlines()根據換行符n將字符串拆分,分別放入列表。
- partition(sep='拆分符'),rpartition(sep='拆分符') ,將字符串拆分為三部分。 拆分符前面,拆分符,拆分符后面,然后將這三部分封裝成元組作為方法返回值。
s.partition('拆分符') 從左邊查找拆分符,第一次出現的地方拆分
s.rpartition('拆分符') 從右邊查找拆分符,第一次出現的地方拆分
若字符串中不存在指定的拆分符:
rpartition返回的元組中字符串三部分為: 字符串本身,空字符串,空字符串
rpartition返回的元組中字符串三部分為: 空字符串,空字符串,字符串本身
- 合并字符串有2種方法
一是用+合并,優點是代碼簡潔,缺點是效率低(每次合并都會新建字符串)。
二是用join()方法,可將元組、列表、字典(key)轉化為字符串,但它們的元素必須都是字符串,有非字符串會報錯。示例如下:
list=['abb', 'bcc', 'cdd']
print(''.join(list)) # abbbcccdd
out:
abbbcccdd
在循環體中大量合并字符串時建議用join(),經測試比直接用+快了10倍不止。
import time
def strplus(): t1 = time.time()
str1 = ''
for i in range(1000000):
str1 += '中國人'
t2 = time.time()
return t2 - t1
def strjoin(): t1 = time.time()
list1 = [] for i in range(1000000):
list1.Append('中國人')
str2 = ''.join(list1)
t2 = time.time()
return t2 - t1
print(strplus()) # 1.0035312175750732
print(strjoin()) # 0.08500289916992188
out:1.0035312175750732
0.08500289916992188
以is開頭的字符串方法
- s.isidentifier():判斷字符串是否是合法的標識符
- s.isspace(): 判斷字符串是否全部由空格組成
- s.isdecimal(): 判斷字符串是否全部由十進制數組成
- s.isnumeric(): 判斷字符串是否全部由數字組成
- s.isalnum(): 判斷字符串是否僅由數字和字母組成
- s.isalpha():判斷字符串是否全部由字母組成
去除字符串空白符方法strip、lstrip、rstri.ps
- strip([chars]) 缺省參數時移除頭尾的空白符(n、t、r、空格),指定參數時可移除指定字符
- s.ltrip([chars]) 缺省參數時移除開頭的空白符(n、t、r、空格),指定參數時可移除指定字符
- s.rtrip([chars]) 缺省參數時移除結尾的空白符(n、t、r、空格),指定參數時可移除指定字符
有需要思維導圖的朋友可以關注我再私信我留下你的郵箱,保證會把思維導圖發email給你,看思維導圖比看文章更容易記憶。