和其他語(yǔ)言一樣,Python為string對(duì)象提供了轉(zhuǎn)換大小寫(xiě)的方法:upper()和lower()。還不止這些,Python還為我們提供了首字母大寫(xiě),其余小寫(xiě)的capitalize()方法,以及所有單詞首字母大寫(xiě),其余小寫(xiě)的title()方法。函數(shù)較簡(jiǎn)單,看下面的例子:
s='hEllopYthon'
prints.upper()
prints.lower()
prints.capitalize()
prints.title()
輸出結(jié)果:
HELLOPYTHON
hellopython
Hellopython
HelloPython
判斷大小寫(xiě)
Python提供了isupper(),islower(),istitle()方法用來(lái)判斷字符串的大小寫(xiě)。注意的是:
1.沒(méi)有提供iscapitalize()方法,下面我們會(huì)自己實(shí)現(xiàn),至于為什么Python沒(méi)有為我們實(shí)現(xiàn),就不得而知了。
2.如果對(duì)空字符串使用isupper(),islower(),istitle(),返回的結(jié)果都為False
print'A'.isupper()#True
print'A'.islower()#False
print'PythonIsSoGood'.istitle()#True
#print'Dontdothat!'.iscapitalize()#錯(cuò)誤,不存在iscapitalize()方法
實(shí)現(xiàn)iscapitalize
1.如果我們只是簡(jiǎn)單比較原字符串與進(jìn)行了capitallize()轉(zhuǎn)換的字符串的話,如果我們傳入的原字符串為空字符串的話,返回結(jié)果會(huì)為T(mén)rue,這不符合我們上面提到的第2點(diǎn)。
defiscapitalized(s):
returns==s.capitalize()
有人想到返回時(shí)加入條件,判斷l(xiāng)en(s)>0,其實(shí)這樣是有問(wèn)題的,因?yàn)楫?dāng)我們調(diào)用iscapitalize('123')時(shí),返回的是True,不是我們預(yù)期的結(jié)果。
2.因此,我們回憶起了之前的translate方法,去判斷字符串是否包含任何英文字母。實(shí)現(xiàn)如下:
importstring
notrans=string.maketrans('','')
defcontainsAny(str,strset):
returnlen(strset)!=len(strset.translate(notrans,str))
defiscapitalized(s):
returns==s.capitalize()andcontainsAny(s,string.letters)
#returns==s.capitalize()andlen(s)>0#如果s為數(shù)字組成的字符串,這個(gè)方法將行不通
調(diào)用一下試試:
printiscapitalized('123')
printiscapitalized('')
printiscapitalized('Evergreeniszcr1985')
輸出結(jié)果:
False
False
True
以上內(nèi)容為大家介紹了python之轉(zhuǎn)換大小寫(xiě),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.fengjieshuijing.cn/