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