Python學(xué)習(xí)之str 以及常用的命令
str 字符串
例如:
name = "adam"
name1 = "周大福"
命令語句的條件參數(shù)配置格式
center(self,width,fillchar= None)
self:
可以直接忽略
width:
必須有參數(shù)
fillchar= None:
可以不用單獨設(shè)置參數(shù)
凡有參數(shù) = None的 都可以理解為 可以不用單獨設(shè)置此參數(shù)
str 里有一些常用的命令
1、capitalize
首字母大寫
name = "adam" v = name.capitalize() #name內(nèi)的字符串首字母大寫 print(type(v),v)
2、casefold和lower
所有變小寫
name = "aDam" v = name.casefold() #name內(nèi)的字符串變成小寫(它可以處理不同的語種內(nèi)的字母大小寫) print(type(v),v) name = "aDam" v2 = name.lower() #name內(nèi)的字符串變成小寫(它只能處理英文) print(type(v2),v2)
3、center
設(shè)置字符串長度并將內(nèi)容劇中,空白位置進行填充并且何可設(shè)置填充的符號默認(rèn)填充空格
name = "adam" v = name.center(25,"+") #在name賦值的字符串的前后各增加加號 ,使得整體字符串占一共有8個字符之前name的賦值字符串劇中,并且賦值給v print(type(v),v)
4、count
尋找字符串中的子序列或字符出現(xiàn)的次數(shù),并可以設(shè)置起始的尋找位數(shù)
name = "adam" v = name.count('a',2,4) #計算a在name賦值的字符串內(nèi) 出現(xiàn)過多少次,不寫(,2,4)的話默認(rèn)是沖頭到位找,寫了就是從地2到4位尋找 print (v)
5、endswith和startswith
endswith
判斷結(jié)尾的字符是什么 可以設(shè)置 起始位置
startswith
判斷開頭的字符是什么 可以設(shè)置 起始位置 注意設(shè)置的開始位置要前移一個單位
name = "adam" v = name.endswith('d',1,2) #判斷 name賦值的字符串 從第一個字符到第二個字符結(jié)束 結(jié)尾的字母是不是d v1 = name.startswith('a',0,2)#判斷name賦值的字符串,從第0位到第2位 是不是以 字母a開頭 print (v) print (v1)
6、expandtabs
將\t 前面字符位數(shù)用空格補至x位 ,如\t 前字符位數(shù)等于x 則 直接用x個空格替換\t 如\t前字符位數(shù)大于x 則在前面字符最末尾補x余數(shù)個空格(輸出結(jié)果不再顯示\t)
test = '12345\t6789' v = test.expandtabs(8) v1 = test.expandtabs(3) v2 = test.expandtabs(5) print(v) print(v1) print(v2) #應(yīng)用實例: test = '姓名\t性別\t身高\n張三\t男\(zhòng)t180\n張三\t男\(zhòng)t180\n張三\t男\(zhòng)t180' v = test.expandtabs(10) print(v)
7、find
從頭往后找到第一個子序列獲取其前面有多少個字符,也可以規(guī)定尋找范圍,設(shè)定的搜索范圍邏輯關(guān)系位 起始位數(shù) <= 被搜索范圍 <結(jié)束位置。
name = "adamadamadam" #創(chuàng)建變量name并賦值adamadamadam v = name.find('ma',6,9) #設(shè)定搜索ma子序列從6到8位 print (v) #顯示v的值 #結(jié)果為:7
PS:當(dāng)find找不到目標(biāo)子序列的時候會賦值位-1而另一個尋找命令index在找不到目標(biāo)子序列時會直接程序報錯,所以推薦使用find命令
8、format
格式化,將一個字符串中的占位符替換為指定的值“大括號內(nèi)的就是占位符”
name = "adam" #創(chuàng)建變量name并賦值為adam xingBie = "男" #創(chuàng)建變量xingBie并賦值為"男" xianShi = "I am {name1},{xingBie1}" #創(chuàng)建變量xianShi并賦值為"I am {name1},{xingBie1}" print(xianShi) #顯示xianShi #結(jié)果:I am {name1},{xingBie1} v = xianShi.format(name1 = name ,xingBie1 = xingBie) #使用變量name和xingBie替換xianShi變量中的name1和xingBie1,并且賦值給v print(v) #顯示v #結(jié)果:I am adam,男
format的另一種書寫格式,可以使用數(shù)字占位,并且在賦值的時候程序會默認(rèn)依次對數(shù)字賦值,創(chuàng)建占位符號時需要從0開始使用數(shù)字占位
name = "adam" #創(chuàng)建變量name并賦值為adam xingBie = "男" #創(chuàng)建變量xingBie并賦值為"男" xianShi = "I am {0},{1}" #創(chuàng)建變量xianShi并賦值為"I am {0},{1}" print(xianShi) #顯示xianShi #結(jié)果:I am {0},{1} v1 = xianShi.format(name ,xingBie) #使用變量name 和 xingBie的值替換xianShi中的 0 和 1的值,并且賦值給v1 print(v1) #顯示v1 #結(jié)果:I am adam,男
9、format_map
(字典)。。。。。
name = "adam" #創(chuàng)建變量name并賦值為adam xingBie = "男" #創(chuàng)建變量xingBie并賦值為"男" xianShi = "I am {name1},{xingBie1}" #創(chuàng)建變量xianShi并賦值為"I am {name1},{xingBie1}" print(xianShi) #顯示xianShi v = xianShi.format(name1 = name ,xingBie1 = xingBie) #使用變量name和xingBie替換xianShi變量中的name1和xingBie1,并且賦值給v print(v) #顯示v #結(jié)果:I am adam,男 v1 = xianShi.format_map({'name1':name,'xingBie1':xingBie}) #使用format_map的格式給v1賦值 print(v1) #顯示v1 #結(jié)果:I am adam,男
10、isalnum
判斷字符串中是否只有字母 或 數(shù)字,輸出布爾值
name = 'adam123'#給變量name賦值adam name1 = 'adam+'#給name1賦值adam+ name2 = 'adam' name3 = '123' v = name.isalnum()#判斷name中是否只含有字母或數(shù)字,并把布爾值賦值給v v1 = name1.isalnum() #判斷name1中是否只含有字母或數(shù)字,并把布爾值賦值給v1 v2 = name2.isalnum() v3 = name3.isalnum() print(v) print(v1) print(v2) print(v3)
11、isalpha
判斷字符串中是否只含有字母 或 漢字,輸出布爾值
name = 'adam123'#給變量name賦值adam123 name1 = 'adam+'#給name1賦值adam+ name2 = 'adam'#給name2賦值adam name3 = '張三' #給name3賦值張三 v = name.isalpha() v1 = name1.isalpha() v2 = name2.isalpha() v3 = name3.isalpha() print(v) print(v1) print(v2) print(v3)
12、isdecimal、isdigit、isnumeric
他們時用來判斷字符串是否只是數(shù)字輸出布爾值
isdecimal
:只能判斷阿拉伯?dāng)?shù)字為 真 (推薦用這個比較準(zhǔn))
isdigit
:阿拉伯?dāng)?shù)字和符號數(shù)“123和③” 為真
isnumeric
:阿拉伯?dāng)?shù)字、符號數(shù)字、羅馬數(shù)字、漢字?jǐn)?shù),均為真“123、③、Ⅲ、四”
test1 = '123' #賦值 test2 = '1a' #這個也可以是16進制數(shù) test3 = '②' #符號數(shù)字 ② test4 = 'Ⅲ' #羅馬數(shù)字3,這是一個字符 test5 = '四' #漢字?jǐn)?shù)字四 vecimal1 = test1.isdecimal() #判斷字符串是否為數(shù)字 vecimal2 = test2.isdecimal() vecimal3 = test3.isdecimal() vecimal4 = test4.isdecimal() vecimal5 = test5.isdecimal() vigit1 = test1.isdigit() #判斷字符串是否為數(shù)字 vigit2 = test2.isdigit() vigit3 = test3.isdigit() vigit4 = test4.isdigit() vigit5 = test5.isdigit() vnumeric1 = test1.isnumeric() vnumeric2 = test2.isnumeric() vnumeric3 = test3.isnumeric() vnumeric4 = test4.isnumeric() vnumeric5 = test5.isnumeric() print(vecimal1, vecimal2, vecimal3, vecimal4, vecimal5) #打印isdecimal判斷的結(jié)果 print(vigit1, vigit2, vigit3, vigit4, vigit5) #打印isdigit判斷的結(jié)果 print(vnumeric1, vnumeric2, vnumeric3, vnumeric4, vnumeric5)
13、isidentifier
測試字符串是不是以 字母數(shù)字下劃線組成并且不以字母或下劃線開頭
PS:這個命令不會因為 字符串是python的關(guān)鍵字 就判斷為假
print( "if".isidentifier() ) print( "def".isidentifier() ) print( "class".isidentifier() ) print( "_a".isidentifier() ) print( "中國123a".isidentifier() ) print( "123".isidentifier() ) print( "3a".isidentifier() ) print( "".isidentifier() )
14、islower、lower、isupper、upper
islower
判斷字符串是否全部為小寫
lower
把字符串內(nèi)所有字符所有字符變成小寫
isupper
判斷字符串是否全部為大寫
upper
把字符串內(nèi)所有字符所有字符變成大寫
name = 'Adam' name1 = 'ADAM' name2 = 'adaM' name3 = 'aDam' v = name.islower() v1 = name1.islower() v2 = name2.islower() v3 = name3.islower() print('Adam',v,'ADAM',v1,'adaM',v2,'aDam',v3) x = name.lower() x1 = name1.lower() x2 = name2.lower() x3 = name3.lower() print('Adam',x,'ADAM',x1,'adaM',x2,'aDam',x3) n = name.isupper() n1 = name1.isupper() n2 = name2.isupper() n3 = name3.isupper() print('Adam',n,'ADAM',n1,'adaM',n2,'aDam',n3) k = name.upper() k1 = name1.upper() k2 = name2.upper() k3 = name3.upper() print('Adam',k,'ADAM',k1,'adaM',k2,'aDam',k3)
15、isprintable
判斷字符串中是否含有不可見或不可打印的 字符比如 \n \t 等
print('\tabc'.isprintable()) print('abc\n'.isprintable()) print('\tabc\n'.isprintable()) print('abc'.isprintable())
16、isspace
判斷字符串是否全部都是空格
test = ' ' test1 = ' a' test2 = ' a ' test3 = '' v = test.isspace() v1 = test1.isspace() v2 = test2.isspace() v3 = test3.isspace() print(v,v1,v2,v3) #True False False False
17、istitle、title
istitle
判斷是否為標(biāo)題(所有單詞首字母均為大寫)
title
將字符串轉(zhuǎn)換成標(biāo)題也就是把所有字母的 首字母轉(zhuǎn)換成大寫
test = 'wo shi zhang san , wo ba sui le ' v = test.istitle() print(v) #False v1 = test.title() print(v1) #Wo Shi Zhang San , Wo Ba Sui Le v2 = v1.istitle() print(v2) #True
18、join
在字符與字符 中間加上 設(shè)置好的間隔符當(dāng)變量值中只有一個字符的時候則什么都不做,可以設(shè)置添加的符號
test = '我是張三,我八歲了' test1 = '我' print(test) #我是張三,我八歲了 x = ' ' v = x.join(test) print(v) #我 是 張 三 , 我 八 歲 了 v1 = x.join(test1) print(v1) #我
19、ljus、rjust、center、zfill
ljust
字符串靠左對齊 不夠位數(shù)的用設(shè)置的字符補齊
rjust
字符串靠右對齊 不夠位數(shù)的用設(shè)置的字符補齊
center
字符串劇中對齊 不夠位數(shù)的用設(shè)置的字符補齊,如果只需要補1個字符,則補在字符串左側(cè)
zfill
只能在字符串左側(cè)填充0
name = 'adam' v = name.ljust(6,'*') #文字左對齊 不至6位用*補位 v1 = name.rjust(6,'*') #文字右對齊 不至6位用*補位 v2 = name.center(6,'*') #文字劇中 不至6位用*補位 v3 = name.zfill(6) #文字右對齊 不至6位用*補位 print(v,v1,v2,v3) #adam** **adam *adam* 00adam
20、lstrip 、rstrip、strip
lstrip
從左向右匹配刪除空格,直到遇到不匹配的那個字符
rstrip
從右向左匹配刪除空格,直到遇到不匹配的那個字符
strip
去掉兩側(cè)的空格
PS:他們還可以去掉 /t /n這樣的功能符(默認(rèn)下),還可以指定去掉任意字符,匹配原則是 優(yōu)先最多匹配原則
name = ' ad am ' v = name.lstrip() #去掉左側(cè)的空格直到遇到其他字符 v1 = name.rstrip() #去掉右側(cè)的空格直到遇到其他字符 v2 = name.strip() #去掉兩側(cè)的空格直到遇到其他字符 print(v) #ad am print(v1)# ad am print(v2)#ad am
21、translate、maketrans
translate:
執(zhí)行映射轉(zhuǎn)換
maketrans:
創(chuàng)建映射轉(zhuǎn)換關(guān)系,先寫入原字符表,再寫入要轉(zhuǎn)換成的字符表,也可以再定義一個需要刪除的字符表
yuanZiFu = 'abcde' #定義原始匹配字符 bianGengZiFu = '12345' #定義匹配后變更的字符 shanChuZiFu = 'fghij' #定義原始匹配刪除的字符 zhuanHuanBiao = str.maketrans(yuanZiFu,bianGengZiFu) #創(chuàng)建字符映射轉(zhuǎn)換表(匹配yuanZiFu轉(zhuǎn)換成bianGengZiFu) zhuanHuanShanChuBiao = str.maketrans(yuanZiFu,bianGengZiFu,shanChuZiFu) #創(chuàng)建字符映射轉(zhuǎn)換刪除表(匹配yuanZiFu轉(zhuǎn)換成bianGengZiFu刪除shanChuZiFu) yuanShiZiFuChuan = 'a1b2c3d4e5fagbhcidje' #創(chuàng)建原始字符串 print(yuanShiZiFuChuan.translate(zhuanHuanBiao)) #1122334455f1g2h3i4j5 print(yuanShiZiFuChuan.translate(zhuanHuanShanChuBiao)) #112233445512345
22、partition、rpartition、split、rsplit、splitlines() 、splitlines(True) 、splitlines(Fales)
partition
把字符串分割為3份 從字符串的左側(cè)向右尋找 設(shè)置的分隔符號 進行分割,分割符號會被單獨分割成中間的那部分
rpartition
把字符串分割為3份 從字符串的右側(cè)向左尋找 設(shè)置的分隔符號 進行分割,分割符號會被單獨分割成中間的那部分
ps partition
和rpartition
需要設(shè)置分割符
split
可以指定分割的塊數(shù) 左側(cè)向右尋找分割符號 默認(rèn)是匹配的所有分割符號 全部都進行分割 且分割符號并不會出現(xiàn)在結(jié)果中
rsplit
可以指定分割的塊數(shù) 右側(cè)向左尋找分割符號 默認(rèn)是匹配的所有分割符號 全部都進行分割 且分割符號并不會出現(xiàn)在結(jié)果中
ps:分割符默認(rèn)為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
splitlines()
默認(rèn)根據(jù)換行符號\n 進行分割 且不會保留換行符號
splitlines(True)
根據(jù)換行符號\n 進行分割 且保留換行符號 換行符號出現(xiàn)在被分割模塊的右側(cè)splitlines(Fales) 根據(jù)換行符號\n 進行分割 且不會保留換行符號
x1 = '123\n45\t123\n45\t123\n45\t123\n45' print(x1.partition('5')) #('123\n4', '5', '\t123\n45\t123\n45\t123\n45') print(x1.rpartition('5'))#('123\n45\t123\n45\t123\n45\t123\n4', '5', '') print(x1.split('\n',3))#['123', '45\t123', '45\t123', '45\t123\n45'] print(x1.rsplit('\t',2)) #['123\n45\t123\n45', '123\n45', '123\n45'] print(x1.splitlines()) #['123', '45\t123', '45\t123', '45\t123', '45'] print(x1.splitlines(True)) #['123\n', '45\t123\n', '45\t123\n', '45\t123\n', '45'] print(x1.splitlines(False)) #['123', '45\t123', '45\t123', '45\t123', '45']
23、swapcase
大小寫轉(zhuǎn)換 ,把字符串里面的大小寫全部轉(zhuǎn)換
name = 'Adam' v = name.swapcase() print(v) #aDAM
24、replace
替換,從左往右尋找匹配的子序列,然后全部進行替換,可以設(shè)定替換幾個,("原變量中的子序列","替換后的子序列",替換幾個子序列)
name = 'adamadamadam' v = name.replace('da','yyy') print(v) #ayyymayyymayyym
PS:匹配原則最長公共子序列 兩個或多個字符串內(nèi) 最長的相同的子序列
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。