Python爲String類型提供了不少頗有用的內置方法,這篇文章主要針對Python2.7的內置方法作一個測試列舉,展現一下用途。html
若是你們想看原版的,能夠去這個網址看(https://docs.python.org/2/library/stdtypes.html#string-methods),可是這裏是我本身的實踐以及一些理解。python
1. str.
capitalize
()git
返回第一個字母大寫的strshell
str = "a string" str.capitalize()
'A string'
2.str.
center
(width[, fillchar])api
返回一個width寬的string,其中str居中顯示,若是有多餘的字符,則以fillchar來填充,若沒有指定fillchar,則默認使用空格。這個方法主要的功能在於輸出一致長度的內容,這邊舉一個小的應用:編輯器
icon = "*" for i in range(1,11,2): if i<=5: out = icon * i else: out = icon print out.center(5)
執行上述代碼,則會輸出以下的一顆樹:測試
3. str.
count
(sub[, start[, end]])this
返回sub在str內部從start到end爲止(不包括end),不重疊出現的次數編碼
a= "abcdefabcdabcccccc" a.count("a") 3 a.count("c",0,12) 2 a="aaaaaaaaaa" a.count("aa") 5
4.str.
decode
([encoding[, errors]])spa
在Python中,從Unicode轉爲其餘編碼方式成爲encode,反之成爲decode。因此這個方法返回將用encoding編碼的str恢復爲unicode,輸出是一個unicode的字符串。errors是對於解碼過程當中出錯時候的處理方式,主要有如下幾種
5.str.
encode
([encoding[, errors]])
將str用encoding的編碼方式轉爲字符串。errors和上述表格一致。
如今將4,5 這兩個方法結合在一塊兒展現一個例子:
1 # -*- coding: utf-8 -*- 2 3 a = "中文" 4 #a.decode("utf-8") 5 a = a.decode("utf-8") 6 #a = a.decode() 7 print a 8 a.encode("utf-8") 9 print a
代碼第一行:在python源碼中若是使用了中文字符,運行時會有錯誤,解決的辦法是在源碼的開頭部分加入字符編碼的聲明,在自帶的編輯器內若是不加的話在會出現以下的報錯彈出框:
第5行指定了encoding的參數爲"utf-8", 則print a的時候能夠正常輸出中文兩個字,若是是第6行這樣不指定的,使用的是默認的編碼方式,在Python2的自帶編輯器內,是ASCII。那麼ASCII是沒法編碼中文的,因此運行時在shell內會輸出報錯,第8行將unicode又從新編碼回普通的string,輸出中文兩個字。
關於Python中的編碼解碼問題能夠看一下這個連接:https://my.oschina.net/leejun2005/blog/74430
6.str.
endswith
(suffix[, start[, end]])
判斷 str是否是以suffix結尾,start和end指定開始和結尾,不包括end所在的字符。suffix能夠是一個tuple,包含多個suffix
a = "abcbcb##" print a.endswith("#") print a.endswith("#",0,-3)
輸出
True
False
7.str.
expandtabs
([tabsize])
根據指定的tabsize來擴展str中的tab,tabsize的默認值是8
這邊引用一個stack overflow(https://stackoverflow.com/questions/34546171/python-expandtabs-string-operation)上的一段代碼來做爲例子:
>>> str = "this is\tstring" >>> print str.expandtabs(0) this isstring >>> print str.expandtabs(1) this is string >>> print str.expandtabs(2) this is string >>> print str.expandtabs(3) this is string >>> print str.expandtabs(4) this is string >>> print str.expandtabs(5) this is string >>> print str.expandtabs(6) this is string >>> print str.expandtabs(7) this is string >>> print str.expandtabs(8) this is string >>> print str.expandtabs(9) this is string >>> print str.expandtabs(10) this is string >>> print str.expandtabs(11) this is string
8. str.
find
(sub[, start[, end]])
find 能夠找到sub在str(start和end不包括end之間)內的index。若是要判斷一個sub是否是在str中,用in
9. str.
format
(*args, **kwargs)
str中能夠用{numeric},或者是{key} 來指代要被格式化的部分,而後在format中,用tuple或者是dict來給str中的那些部分賦值
>>> a = "this is a {0} made by {1}".format("test","tina") >>> a 'this is a test made by tina' >>> a = "this is a {mode} made by {name}".format(mode = "test",name = "tina") >>> a 'this is a test made by tina'
10. str.
index
(sub[, start[, end]])
和find同樣,獲取sub在str中的index,可是若是找不到的話,會raise valueError()
11. str.
isalnum
()
判斷str是否是隻包含數字或者字母,而且長度至少爲1,若是是的話則返回True,不然False
>>> a= "123" >>> a.isalnum() True >>> a = "123abc" >>> a.isalnum() True >>> a = "abc" >>> a.isalnum() True >>> a = "" >>> a.isalnum() False >>> a = "+-^&*(123" >>> a.isalnum() False >>> a = "1" >>> a.isalnum() True >>> a = "a" >>> a.isalnum() True
12. str.
isalpha
()
若是str中只包含字母,而且長度大於1,則返回True,不然返回False
>>> a="" >>> a.isalpha() False >>> a="a" >>> a.isalpha() True >>> a = "1" >>> a.isalpha() False
13. str.
isdigit
()
判斷str中是否只有數字而且長度大於等於1,是的話返回True,不然返回False
>>> a="" >>> a.isdigit() False >>> a="a" >>> a.isdigit() False >>> a = "1" >>> a.isdigit() True
14. str.
islower
()
若是str中全是小寫字符而且str至少包含一個小寫字母,則返回True,不然返回False
15. str.
isspace
()
若是str中全是空格而且str的長度大於等於1,則返回True,不然返回False
16. str.
istitle
()
若是str中的每一個word都首字母大寫並且str至少包含一個大寫字母,則返回True,不然返回False
>>> a = "this is a test string" >>> a.istitle() False
17. str.
isupper
()
若是str中的字母都是大寫,而且str中至少包含一個大寫字母 ,則返回True,不然返回False
>>> a= "123" >>> a.isupper() False >>> a = "123A" >>> a.isupper() True >>> a="abc" >>> a.isupper() False
18. str.
join
(iterable)
iterable是一個序列的迭代器,若是這個序列包含了string和unicode以外的類型,則join會出錯,若是序列中包含了unicode,則最後返回一個unicode。這個方法將序列中的每一個元素用str來鏈接起來
>>> a = [1,2,3,4,5] >>> ','.join(a) Traceback (most recent call last): File "<pyshell#93>", line 1, in <module> ','.join(a) TypeError: sequence item 0: expected string, int found >>> a = ['a','b','c'] >>> ','.join(a) 'a,b,c'
19. str.
ljust
(width[, fillchar])
返回一個width長的string,其中str左對齊,剩餘的位置用fillchar補齊,fillchar默認是空格。若是width<len(str) ,則返回str
>>> a = "if you know what i mean" >>> a.ljust(40,'*') 'if you know what i mean*****************' >>> a.ljust(40) 'if you know what i mean ' >>> a.ljust(2) 'if you know what i mean'
20. str.
lower
()
將str中的字母都換爲小寫字母再返回,數字無所謂大寫小寫,會保持不變
21. str.
lstrip
([chars])
從左邊開始,將str中的chars的位置刪除,直到遇到第一個不符合的位置爲止,若是不提供chars,則刪除空格。若是從左邊開始的第一個字符不符合chars中的任何一個,則不會刪除任何字符
>>> a = ' this is a test ' >>> a.lstrip() 'this is a test ' >>> a.lstrip('a') ' this is a test ' >>> a.lstrip('t') ' this is a test ' >>> a = 'www.example.com' >>> a.lstrip('a') 'www.example.com' >>> a.lstrip('cmowz.') 'example.com'
22. str.
partition
(sep)
將str用sep分隔,而且返回一個包含三個元素的Tuple,即sep以前的部分,sep 和sep以後的部分; 若是在str中沒有找到sep,則返回str和兩個空的string組成的元組
23. str.
replace
(old, new[, count])
將str中old的部分用new來替換,若是count這個參數也提供了,那麼只有前count個old會被替換
>>> a = "aaaaaaa" >>> a.replace('a','t') 'ttttttt' >>> a.replace('a','t',3) 'tttaaaa'
24. str.
rfind
(sub[, start[, end]])
返回str的start 和end(不包括end)之間包含了sub的最大的index,若是沒找到則返回-1
25. str.
rindex
(sub[, start[, end]])
和rfind的功能一致,可是若是沒有找到會報valueError的錯
26. str.
rjust
(width[, fillchar])
返回一個width寬的string,其中str居右對齊,若是有多餘的字符位置,則用fillchar補齊;若是width<len(str),則返回str。fillchar的默認值是一個空格
27. str.
rpartition
(sep)
將str在sep最後一次出現的位置分隔,而且返回一個包含三個元素的Tuple,即sep以前的部分,sep 和sep以後的部分; 若是在str中沒有找到sep,則返回兩個空的string和str組成的元組
28. str.
rsplit
([sep[, maxsplit]])
用sep做爲分隔符分割str,返回一個包含分割以後各個詞的list。若是sep沒有提供,則用空格來分割。若是制定了maxsplit,則只有右側的maxsplit個詞被分割出來。和split的區別只有一個是從左,一個是從右。
>>> a = 'this.is a test.for the rsplit' >>> a.rsplit(' ') ['this.is', 'a', 'test.for', 'the', 'rsplit'] >>> a.rsplit(' ',2) ['this.is a test.for', 'the', 'rsplit'] >>> a.rsplit(' ',1) ['this.is a test.for the', 'rsplit']
29. str.
rstrip
([chars])
從右邊開始,將str中的chars的位置刪除,直到遇到第一個不符合的位置爲止,若是不提供chars,則刪除空格。若是從右邊開始的第一個字符不符合chars中的任何一個,則不會刪除任何字符
30. str.
split
([sep[, maxsplit]])
用sep做爲分隔符分割str,返回一個包含分割以後各個詞的list。若是sep沒有提供,則用空格來分割。若是制定了maxsplit,則只有左側的maxsplit個詞被分割出來。連續的spe不會做爲一個sep來處理,而是當作sep之間是一個空的字符,以下所示
>>> a.split(',') ['1', '', '2']
sep能夠包括多個字符,如‘<>’。若是sep沒有指定的話,則用空格來做爲分隔符,而且連續的空格被認定爲一個,以下所示:
>>> a=' ' >>> a.split() [] >>> a = 'this is a test code for split with whitespace' >>> a.split() ['this', 'is', 'a', 'test', 'code', 'for', 'split', 'with', 'whitespace']
31. str.
splitlines
([keepends])
根據換行標誌來分割string,'\r' , '\n', '\r\n' 是經常使用的換行符(boundaries)
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines() ['ab c', '', 'de fg', 'kl'] >>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True) ['ab c\n', '\n', 'de fg\r', 'kl\r\n'] >>> "".splitlines() [] >>> "One line\n".splitlines() ['One line'] >>> ''.split('\n') [''] >>> 'Two lines\n'.split('\n') ['Two lines', '']
32. unicode.
splitlines
([keepends])
與上一個string的splitlines基本一致,除了unicode使用的換行符更多一些,以下表所示:
33. str.
startswith
(prefix[, start[, end]])
判斷 str是否是以suffix開始,start和end指定開始和結尾,不包括end所在的字符。prefix能夠是一個tuple,包含多個prefix
34. str.
strip
([chars])
刪除str中包含的chars,若是chars沒有提供,則刪除str中的空格。chars能夠是一個字符串,包含多個要刪除的字符
35. str.
swapcase
()
將str中的大寫字母和小寫字母反轉,即大寫改小寫,小寫改大寫
36. str.
title
()
將str轉爲title格式
>>> a = 'this is a title' >>> a.title() 'This Is A Title'
37. str.
translate
(table[, deletechars])
刪除str中的deletechars,而且將剩餘的字符用table的對應關係來對應爲另外一個字符。能夠用maketrans來生成一個翻譯的table,也能夠指定爲None,當這個table指定爲None時,這個方法只是簡單地執行刪除字符的操做。
38. str.
upper
()
將str中的字符轉爲大寫格式。須要注意一點,str.upper().isupper() 可能爲False,好比當str中含有數字字符時,或者當Unicode
39. str.
zfill
(width)
返回一個width長的string,若是str的長度小於width,則在左側填充0,若是str的長度大於width,則返回str
>>> a='this' >>> a.zfill(10) '000000this'
40. unicode.
isnumeric
()
若是unicode內部只有數字,則返回True,不然返回False。 Numeric指數字字符以及Unicode中的數字類型,如 U+2155, VULGAR FRACTION ONE FIFTH.
>>> u = u'1.2345' >>> u.isnumeric() False >>> u=u'12345' >>> u.isnumeric() True
41. unicode.
isdecimal
()
若是unicode內部只有數字,則返回True,不然返回False。 Numeric指數字字符以及Unicode中的數字類型,如 U+2155, VULGAR FRACTION ONE FIFTH.
isnumeric 和 isdecimal 的區別詳見這個連接:http://www.runoob.com/python/att-string-isnumeric.html,最後的筆記列表有較爲詳細的介紹。
若是有問題的地方,歡迎你們批評指正。