不同数据类型的处理函数(一)
紫色部分使用率是非常高的,盡量掌握。以下例程以python3為例,2.x略有差別。
python中處理數(shù)據(jù)函數(shù)有很多很多種,作為使用者沒有必要完全掌握,掌握一個原則:“會用就行”,一些不常見的函數(shù)能夠隨時“學(xué)會使用”就可以了。
1.處理數(shù)字的函數(shù)非常多,但是一般情況下數(shù)字只是用于計算,只需要掌握.bit_length()就可以。
x.bit_length() 功能:用于計算x轉(zhuǎn)換為二進(jìn)制后的位數(shù),x為int型
v1=3 v2=v1.bit_length() print(v2) #3換成二進(jìn)制是11,所以輸出是2 v3=4 v4=v3.bit_length() #4換成二進(jìn)制是100,所以輸出是3 print(v4)
v5=255 #255換成二進(jìn)制是1111 1111,所以輸出是8
v6=v5.bit_length()
print(v6)
輸出:
2
3
8
注意:若x為str型,報錯
2.處理字符串函數(shù)。
x.capitalize() 功能:將首字母大寫 v1="abc" v2=v1.capitalize() print(v2)
輸出:Abc
注意:若x為int型,結(jié)果不報錯,但是沒有任何意義。
x.casefold() 功能:將x中所有的大寫字母小寫 v1="AbC" v2=v1.casefold() print(v2)
輸出:
abc
.center() 作用:按照設(shè)定的總長度居中,并且可用任意字符補(bǔ)充其余位置,缺省值默認(rèn)為空格。 原形為:center(self, *args, **kwargs)。括號中第一部分可以忽略,第二部分為總長度,不能缺省,第三部分為填充其余位置的字符,缺省值默認(rèn)為空格。 v1="AbC" v2=v1.center(20,"#") print(v2) v3="AbC" v4=v3.center(20) print(v4)
輸出:
########AbC#########
? ? ? AbC
注意:第三部分必須是一個字符,如果是大于一個字符,提示報錯The fill character must be exactly one character long
,意思是所占位置必須是一個字符長度。在python中,沒有“字符”的定義,一個字符也是字符串,這里為了方便理解,稱為字符。
x.ljust() 作用:字符串左居中,總長度須設(shè)定,空余位置用設(shè)定字符補(bǔ)齊。 v1="abc" v2=v1.ljust(10,"*") print(v2)
輸出:abc*******
x.rjust() 作用:字符串右居中,總長度須設(shè)定,空余位置用設(shè)定字符補(bǔ)齊。
x.zfill() 作用:字符串右居中,總長度須設(shè)定,其余位置強(qiáng)制0補(bǔ)齊。
x.casefold() x.lower()
作用:將x中所有字符小寫。
v1="AbC" v2=v1.casefold() print(v2) v3="AbC" v4=v3.lower() print(v4)
輸出:
abc
abc
雖然兩者作用看似相同,但是作用范圍略有區(qū)別。casefold()作用范圍更廣,可以將大寫英文字母之外的其他字符也轉(zhuǎn)為小寫,比如希臘字符等。lower()是將大寫英文字母轉(zhuǎn)為小寫字母。所以,日常使用,我們只需要記住casefold()即可。
?
x.upper() 作用:將x中所有字符轉(zhuǎn)為大寫。
?
x.swapcase() 作用:將字符串中所有大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫,其他字符不變。
?
v1="_abC" v2=v1.swapcase() print(v2)
?
輸出:
_ABc
?
?
?
x.count() 功能:尋找子序列出現(xiàn)的次數(shù)。(計算x中某一個或幾個連續(xù)字符出現(xiàn)的次數(shù)。)
函數(shù)原形:count(self, sub, start=None, end=None)?后兩項可以省略。
v1="AbCAbCAbC" v2=v1.count("Ab") #Ab出現(xiàn)了3次,所以輸出為3 print(v2) v1="AbC" v2=v1.count("AC") #AC雖然出現(xiàn)了3次,但是AC并不連續(xù),所以輸出為0 print(v2)
輸出:
3
0
v1="AbCAbCAbC" v2=v1.count("Ab",3) print(v2) v1="AbCAbCAbC" v2=v1.count("Ab",4) print(v2)
輸出:
2
1
start的意思是起始位置,start=3時,重復(fù)次數(shù)是2,start=4時重復(fù)次數(shù)是4,說明第一個A的位置不是0,而是1。
v1="AbCAbCAbC" v2=v1.count("Ab",3,7) print(v2) v1="AbCAbCAbC" v2=v1.count("Ab",3,8) print(v2)
輸出:
1
2
end是結(jié)束位置,end=7時,重復(fù)1次,end=8時重復(fù)2次。7的位置是第三個b,8的位置是第三個C,所以起始位置包含start,不包含end。可以理解為高中所學(xué)的“區(qū)間”概念,左閉右開。
注意:類似的,在原型中有=none的都是可以省略的。
?
?
x.endswitch()? 作用:檢測是否以某一個字符串結(jié)束,返回值是布爾型,即true false。
v1="ABC" v2=v1.endswith("C") print(v2) v1="ABC" v2=v1.endswith("D") print(v2)
v1="ABCDE"
v2=v1.endswith("CE") #CE不連續(xù),所以輸出是false
print(v2)
輸出:
True
False
False
?
?
x.startswitch()? 作用:檢測是否以某一個字符串開始,返回值是布爾型,即true false。和x.endswitch() 用法一致。
?
x.find()作用:尋找子序列是否存在。如果不存在,返回值為-1;如果存在,返回值是所在位置。第一個位置是0
v1='abcabc' v2=v1.find('bc') print(v2) v1='abcabc' v2=v1.find('ca') print(v2)
輸出:
1
2
x.find()函數(shù)還可以設(shè)置查找啟示和停止位置。同樣遵循左閉右開的原則。
v1='abcabc' v2=v1.find('bc',1,2) print(v2) # 輸出: -1 v1='abcabc' v2=v1.find('bc',1,3) print(v2) # 輸出: 1
index函數(shù)和find()函數(shù)功能一樣,都是尋找;但是當(dāng)找不到時,find()的返回值是-1,index()報錯。
?
?
x.format 作用:替換指定字符
v1="{XXX}棒棒噠 每天{age}歲"
print(v1)
v2=v1.format(XXX="王棟軒",age="18")
print(v2)
輸出:
{XXX}棒棒噠 每天{age}歲
王棟軒棒棒噠 每天18歲
在v1中,需要代替的字符串用大括號{},括起來。也可以不用寫“XXX”和“age”,用占位符表示,從0開始。
v1="{0}棒棒噠 每天{1}歲"
print(v1)
v2=v1.format("王棟軒","18")
print(v2) #輸出:王棟軒棒棒噠 每天18歲
另外一種書寫方式:
v1="{xxx}棒棒噠 每天{age}歲" print(v1) v2=v1.format_map({"xxx":"王棟軒","age":"18"}) print(v2)
不同的是,傳入的值是{"xxx":"王棟軒","age":"18"}
另外一個替換的函數(shù)是replace()
?
v1="XXX棒棒噠,XXX美美噠"
v2=v1.replace('XXX',"王棟軒")
v3=v1.replace('XXX',"王棟軒",1)
v4=v1.replace('XXX',"王棟軒",2)
print(v2,v3,v4)
?
輸出:王棟軒棒棒噠,王棟軒美美噠 王棟軒棒棒噠,XXX美美噠 王棟軒棒棒噠,王棟軒美美噠
?
x.isalnum() 作用:判斷字符串中是否只包含數(shù)字和字母;如果只包含數(shù)字和字符串,返回值是true;否則,false
v1="123abc-+" v2=v1.isalnum() print(v2) v1="123abc" v2=v1.isalnum() print(v2)
輸出:
False
True
x.isalpha()作用是判斷字符串中是否只含有英文字母。是,返回true,不是,返回false。
x.isdecimal()、x.isnumeric()和x.isdigit()用來判定是否只有數(shù)字,但是x.isdecimal()只能判定十進(jìn)制的數(shù)字,x.isdigit()可以判定比較生僻的數(shù)字,比如②
?
?
x.expandtabs()? ?作用:將轉(zhuǎn)義字符\t轉(zhuǎn)為空格,空格數(shù)量為()中內(nèi)容,缺省值為8。
v1="12345679\t1\t23456\t" v2=v1.expandtabs() print(v1) print(v2)
輸出
?
?
x.isidentifier() 作用:檢測字符串是否符合標(biāo)識符命名規(guī)則。在python中,標(biāo)識符命名規(guī)則為:只包含數(shù)字、字母和下劃線,開頭不能是字母。符合規(guī)則返回true,不符合返回false。
x.islower 作用:檢測字符串中是否都是小寫字母,如果是,返回true,如果不是,返回false。
x.isprintable() 作用:檢測字符串中是否含有不能打印的字符。例如轉(zhuǎn)義字符,\n \t等,這些都不能打印出來。如果含有,返回false,如果不含有,返回true
x.isspace() 作用:檢測字符串是否全部是空格(空字符串),是,返回true,不是,返回false
x.istitle() 作用:檢測字符串是否是標(biāo)題,也就是每個單詞首字母大寫。
x.title() 作用:將字符串轉(zhuǎn)為標(biāo)題,也就是每個單詞首字母大寫。
x.islower() 作用:判斷字符串中所有字符是不是小寫字母,是,返回true,否,返回false
x.isupper() 作用:判斷字符串中所有字符是不是大寫字母,是,返回true,否,返回false
x.join() 作用:在原字符串中,每隔一個字符,插入一個新的字符。開頭和結(jié)尾不加。 v1="床前明月光" v2=' ' v3=v2.join(v1) print(v3)
輸出:
床_前_明_月_光
?
x.strip()、x.rstrip()和x.lstrip() ?作用:去掉字符串中的指定子序列,缺省值默認(rèn)為去掉空格或\t
v1="123456789" v2=v1.lstrip("236") v3=v1.rstrip("abc98a") v4=v1.strip("1") print(v2) print(v3) print(v4)
輸出:
123456789
1234567
23456789
從結(jié)果中可以看出,必須從“頭”開始,如v2=v1.lstrip("236")中,v1的左側(cè)“1”沒有去掉,后邊的所有字符不可能去掉。
?
v1=" abc " v2=v1.lstrip() v3=v1.rstrip() v4=v1.strip() print(v2) print(v3) print(v4)
輸出:
?
?
x.translate() 作用:替換字符串中的部分字符
v1='1383838438'
m=str.maketrans('123456','abcdef') #maketrans()的作用是將兩個字符串聯(lián)系起來,為后邊的替換做鋪墊
new_v1=v1.translate(m)
print(new_v1)
輸出:
?ac8c8c8dc8
?
x.partition()和x.rpartition() ?作用:前者從左側(cè)開始分割,后者從右側(cè)開始分割,兩者都只能分割成三部分
v1='1383838438' v2=v1.partition('3') v3=v1.rpartition('3') print(v2,v3)
輸出:
('1', '3', '83838438') ('13838384', '3', '8')
?
x.split()和x.rsplit() ?作用:前者從左側(cè)開始分割,后者從右側(cè)開始分割,與partition()不同的是,可以分割成任意部分,而且弊端是分割的標(biāo)志不再作為分割的結(jié)果。例如下面例子中的“3”不會出現(xiàn)在分割結(jié)果中。split()括號中缺省時,默認(rèn)為分割成數(shù)量最多的部分,即碰到相同字符就分割。
v1='1383838438'
v2=v1.split('3',2)
v3=v1.rsplit('3',2)
print(v2,v3)
輸出:
['1', '8', '838438'] ['13838', '84', '8']
?
x.splitlines() ?作用:對換行符\n進(jìn)行分割。()中的參數(shù)是布爾值,true,false。true代表保留換行\(zhòng)n,false不保留\n(這里的\n不再是換行的意思,就是普通字符而已)。
v1="張三\n李四\n王五" v2=v1.splitlines(True) v3=v1.splitlines(False) print(v2,v3)
輸出:['張三\n', '李四\n', '王五'] ['張三', '李四', '王五']
注意:True or False 首字母必須大寫!!!否則不識別!!!
轉(zhuǎn)載于:https://www.cnblogs.com/lgwdx/p/9572792.html
總結(jié)
以上是生活随笔為你收集整理的不同数据类型的处理函数(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: saber油画是谁画的啊?
- 下一篇: Spring配置文件中注入复杂类型属性