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