Python學(xué)習(xí)之str 以及常用的命令
str 字符串
例如:
name = "adam"
name1 = "周大福"
命令語句的條件參數(shù)配置格式
center(self,width,fillchar= None)
self:
可以直接忽略
width:
必須有參數(shù)
fillchar= None:
可以不用單獨(dú)設(shè)置參數(shù)
凡有參數(shù) = None的 都可以理解為 可以不用單獨(dú)設(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)容劇中,空白位置進(jìn)行填充并且何可設(shè)置填充的符號(hào)默認(rèn)填充空格
name = "adam" v = name.center(25,"+") #在name賦值的字符串的前后各增加加號(hào) ,使得整體字符串占一共有8個(gè)字符之前name的賦值字符串劇中,并且賦值給v print(type(v),v)
4、count
尋找字符串中的子序列或字符出現(xiàn)的次數(shù),并可以設(shè)置起始的尋找位數(shù)
name = "adam" v = name.count('a',2,4) #計(jì)算a在name賦值的字符串內(nèi) 出現(xiàn)過多少次,不寫(,2,4)的話默認(rèn)是沖頭到位找,寫了就是從地2到4位尋找 print (v)
5、endswith和startswith
endswith
判斷結(jié)尾的字符是什么 可以設(shè)置 起始位置
startswith
判斷開頭的字符是什么 可以設(shè)置 起始位置 注意設(shè)置的開始位置要前移一個(gè)單位
name = "adam" v = name.endswith('d',1,2) #判斷 name賦值的字符串 從第一個(gè)字符到第二個(gè)字符結(jié)束 結(jié)尾的字母是不是d v1 = name.startswith('a',0,2)#判斷name賦值的字符串,從第0位到第2位 是不是以 字母a開頭 print (v) print (v1)
6、expandtabs
將\t 前面字符位數(shù)用空格補(bǔ)至x位 ,如\t 前字符位數(shù)等于x 則 直接用x個(gè)空格替換\t 如\t前字符位數(shù)大于x 則在前面字符最末尾補(bǔ)x余數(shù)個(gè)空格(輸出結(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)用實(shí)例: test = '姓名\t性別\t身高\(yùn)n張三\t男\(zhòng)t180\n張三\t男\(zhòng)t180\n張三\t男\(zhòng)t180' v = test.expandtabs(10) print(v)
7、find
從頭往后找到第一個(gè)子序列獲取其前面有多少個(gè)字符,也可以規(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)子序列的時(shí)候會(huì)賦值位-1而另一個(gè)尋找命令index在找不到目標(biāo)子序列時(shí)會(huì)直接程序報(bào)錯(cuò),所以推薦使用find命令
8、format
格式化,將一個(gè)字符串中的占位符替換為指定的值“大括號(hào)內(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ù)字占位,并且在賦值的時(shí)候程序會(huì)默認(rèn)依次對(duì)數(shù)字賦值,創(chuàng)建占位符號(hào)時(shí)需要從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í)用來判斷字符串是否只是數(shù)字輸出布爾值
isdecimal
:只能判斷阿拉伯?dāng)?shù)字為 真 (推薦用這個(gè)比較準(zhǔn))
isdigit
:阿拉伯?dāng)?shù)字和符號(hào)數(shù)“123和③” 為真
isnumeric
:阿拉伯?dāng)?shù)字、符號(hào)數(shù)字、羅馬數(shù)字、漢字?jǐn)?shù),均為真“123、③、Ⅲ、四”
test1 = '123' #賦值 test2 = '1a' #這個(gè)也可以是16進(jìn)制數(shù) test3 = '②' #符號(hào)數(shù)字 ② test4 = 'Ⅲ' #羅馬數(shù)字3,這是一個(gè)字符 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
測(cè)試字符串是不是以 字母數(shù)字下劃線組成并且不以字母或下劃線開頭
PS:這個(gè)命令不會(huì)因?yàn)?字符串是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)變量值中只有一個(gè)字符的時(shí)候則什么都不做,可以設(shè)置添加的符號(hào)
test = '我是張三,我八歲了' test1 = '我' print(test) #我是張三,我八歲了 x = ' ' v = x.join(test) print(v) #我 是 張 三 , 我 八 歲 了 v1 = x.join(test1) print(v1) #我
19、ljus、rjust、center、zfill
ljust
字符串靠左對(duì)齊 不夠位數(shù)的用設(shè)置的字符補(bǔ)齊
rjust
字符串靠右對(duì)齊 不夠位數(shù)的用設(shè)置的字符補(bǔ)齊
center
字符串劇中對(duì)齊 不夠位數(shù)的用設(shè)置的字符補(bǔ)齊,如果只需要補(bǔ)1個(gè)字符,則補(bǔ)在字符串左側(cè)
zfill
只能在字符串左側(cè)填充0
name = 'adam' v = name.ljust(6,'*') #文字左對(duì)齊 不至6位用*補(bǔ)位 v1 = name.rjust(6,'*') #文字右對(duì)齊 不至6位用*補(bǔ)位 v2 = name.center(6,'*') #文字劇中 不至6位用*補(bǔ)位 v3 = name.zfill(6) #文字右對(duì)齊 不至6位用*補(bǔ)位 print(v,v1,v2,v3) #adam** **adam *adam* 00adam
20、lstrip 、rstrip、strip
lstrip
從左向右匹配刪除空格,直到遇到不匹配的那個(gè)字符
rstrip
從右向左匹配刪除空格,直到遇到不匹配的那個(gè)字符
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)換成的字符表,也可以再定義一個(gè)需要?jiǎng)h除的字符表
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è)置的分隔符號(hào) 進(jìn)行分割,分割符號(hào)會(huì)被單獨(dú)分割成中間的那部分
rpartition
把字符串分割為3份 從字符串的右側(cè)向左尋找 設(shè)置的分隔符號(hào) 進(jìn)行分割,分割符號(hào)會(huì)被單獨(dú)分割成中間的那部分
ps partition
和rpartition
需要設(shè)置分割符
split
可以指定分割的塊數(shù) 左側(cè)向右尋找分割符號(hào) 默認(rèn)是匹配的所有分割符號(hào) 全部都進(jìn)行分割 且分割符號(hào)并不會(huì)出現(xiàn)在結(jié)果中
rsplit
可以指定分割的塊數(shù) 右側(cè)向左尋找分割符號(hào) 默認(rèn)是匹配的所有分割符號(hào) 全部都進(jìn)行分割 且分割符號(hào)并不會(huì)出現(xiàn)在結(jié)果中
ps:分割符默認(rèn)為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
splitlines()
默認(rèn)根據(jù)換行符號(hào)\n 進(jìn)行分割 且不會(huì)保留換行符號(hào)
splitlines(True)
根據(jù)換行符號(hào)\n 進(jìn)行分割 且保留換行符號(hào) 換行符號(hào)出現(xiàn)在被分割模塊的右側(cè)splitlines(Fales) 根據(jù)換行符號(hào)\n 進(jìn)行分割 且不會(huì)保留換行符號(hào)
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
替換,從左往右尋找匹配的子序列,然后全部進(jìn)行替換,可以設(shè)定替換幾個(gè),("原變量中的子序列","替換后的子序列",替換幾個(gè)子序列)
name = 'adamadamadam' v = name.replace('da','yyy') print(v) #ayyymayyymayyym
PS:匹配原則最長公共子序列 兩個(gè)或多個(gè)字符串內(nèi) 最長的相同的子序列
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
matplotlib運(yùn)行時(shí)配置(Runtime Configuration,rc)參數(shù)rcParams解析
這篇文章主要介紹了matplotlib運(yùn)行時(shí)配置(Runtime Configuration,rc)參數(shù)rcParams解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python?中?Kwargs?解析的最佳實(shí)踐教程
這篇文章主要介紹了Python中Kwargs解析的最佳實(shí)踐,使用?kwargs,我們可以編寫帶有任意數(shù)量關(guān)鍵字參數(shù)的函數(shù),當(dāng)我們想為函數(shù)提供靈活的接口時(shí),這會(huì)很有用,需要的朋友可以參考下2023-06-06Python實(shí)現(xiàn)簡單的列表冒泡排序和反轉(zhuǎn)列表操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)簡單的列表冒泡排序和反轉(zhuǎn)列表操作,涉及Python列表遍歷、排序、追加等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07python實(shí)現(xiàn)替換word中的關(guān)鍵文字(使用通配符)
今天小編就為大家分享一篇python實(shí)現(xiàn)替換word中的關(guān)鍵文字(使用通配符),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python實(shí)現(xiàn)的直接插入排序算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的直接插入排序算法,結(jié)合實(shí)例形式分析了Python直接插入排序算法的定義與使用相關(guān)操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下2018-04-04Python中的map()函數(shù)和reduce()函數(shù)的用法
這篇文章主要介紹了Python中的map()函數(shù)和reduce()函數(shù)的用法,代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04