微信公衆號:碼農充電站prohtml
我的主頁:https://codeshellme.github.iopython
好代碼自己就是最好的文檔。當你須要添加一個註釋時,你應該考慮如何修改代碼才能不須要註釋。git
—— Steve McConnellgithub
目錄shell
字符串有不少操做函數,因此,這裏咱們專門用一節來介紹這些函數。api
建議:微信
因爲字符串函數較多,對於新手來講,沒必要要一開就掌握全部的函數用法,能夠先粗略的看一遍,有個大概印象,到真正用的着的時候,再來詳細查看也可。用的次數多了,天然就記住了。app
咱們能夠經過dir()
函數來查看一個對象
支持的方法
和屬性
有哪些,經過help()
函數查看某個方法
的詳情。ssh
注意:
1,對象
的概念會在後續章節詳細介紹
2,這裏咱們無需過多的區分函數
與方法
的不一樣,暫時能夠認爲函數
與方法
相同ide
示例:
s = 'abc' # s 是一個字符串 >>> dir(s) # 查看字符串支持的方法 ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] >>> help(s.find) # 查看字符串的find 方法詳情 Help on built-in function find: find(...) method of builtins.str instance # 方法原型 # -> 符號以前是參數 # -> 符號以後時返回值類型 S.find(sub[, start[, end]]) -> int # 方法介紹 Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation. # 方法返回值 Return -1 on failure. (END)
Python 中雙下劃線
樣式的方法__xxx__
,被稱爲魔法方法
(這裏不作詳細介紹),這裏咱們主要關注非魔法方法
。
這裏的dir(s)
顯示的全部方法中,除了魔法方法
外,還有44 個方法,咱們能夠粗略的將這些方法分爲如下8 類:
下面咱們逐一進行介紹。
1.find
方法
做用:從左開始查找,返回子串
sub
在S[start:end]
中的第一個下標
原型:S.find(sub[, start[, end]]) -> int
參數 sub:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:若是找到返回下標,不然返回 -1
示例:
>>> 'abcabcabc'.find('ca') 2 # 找到了,返回下標 >>> 'abcabcabc'.find('bbc') -1 # 沒找到,返回 -1
2.rfind
方法
做用:從右開始查找,返回子串
sub
在S[start:end]
中的第一個下標
原型:S.rfind(sub[, start[, end]]) -> int
參數:同find
方法
返回值:若是找到返回下標,不然返回 -1
示例:
>>> 'abcabcabc'.rfind('ca') 5 >>> 'abcabcabc'.rfind('bbc') -1
3.index
方法
做用:從左開始查找,返回子串
sub
在S[start:end]
中的第一個下標
原型:S.index(sub[, start[, end]]) -> int
參數 sub:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:若是找到返回下標,不然拋出ValueError
異常
示例:
>>> 'abcabcabc'.index('ca') 2 >>> 'abcabcabc'.index('bbc') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found # ValueError 異常
關於Python
異常
,將在後續章節詳細介紹
4.rindex
方法
做用:從右開始查找,返回子串
sub
在S[start:end]
中的第一個下標
原型:S.rindex(sub[, start[, end]]) -> int
參數:同index
方法
返回值:若是找到返回下標,不然拋出ValueError
異常
示例:
>>> 'abcabcabc'.rindex('ca') 5 >>> 'abcabcabc'.rindex('bbc') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
5.count
方法
做用:統計子串
sub
在S[start:end]
中出現的次數
原型:S.count(sub[, start[, end]]) -> int
參數 sub:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:子串出現的次數
示例:
>>> 'abcabcabc'.count('bc') 3
6.capitalize
方法
做用:將字符串
S
的首字符變爲大寫,其他字符變爲小寫,對中文無效
原型:S.capitalize() -> str
參數:無
返回值:新的字符串
示例:
>>> 'AbCdE'.capitalize() 'Abcde'
7.casefold
方法
做用:將字符串
S
中的全部字符變爲小寫,對中文無效
原型:S.casefold() -> str
參數:無
返回值:新的字符串
示例:
>>> 'AbCdE'.casefold() 'abcde'
8.swapcase
方法
做用:將字符串
S
中的大寫字符轉爲小寫,小寫字符轉爲大寫,對中文無效
原型:S.swapcase() -> str
參數:無
返回值:新的字符串
示例:
>>> 'AbCdE中國'.swapcase() 'aBcDe中國'
9.istitle
方法
做用:判斷
S
中的單詞,是否全都首字母大寫,且其它字符小寫
原型:S.istitle() -> bool
參數:無
返回值:True
或False
示例:
>>> 'Abc De fj'.istitle() False >>> 'Abc De Fj'.istitle() True >>> 'Abc De Fj 中國'.istitle() # 能夠有中文 True >>> '中國'.istitle() # 不能只有中文 False
10.title
方法
做用:將每一個非字母后的第一個字母變爲大寫
原型:S.title() -> str
參數:無
返回值:新的字符串
示例:
>>> 'a3bc-abc abc'.title() 'A3Bc-Abc Abc'
11.islower
方法
做用:判斷
S
中的字符是否全是小寫字符
原型:S.islower() -> bool
參數:無
返回值:True
或False
示例:
>>> 'abc'.islower() True >>> 'aBc'.islower() # 有大寫字符,返回 False False >>> 'abc中國'.islower() # 英文字符全是小寫,且包含中文,返回 True True >>> '中國'.islower() # 只有中文,返回 False False >>> ''.islower() False
12.isupper
方法
做用:判斷
S
中的字符是否全是大寫字符
原型:S.isupper() -> bool
參數:無
返回值:True
或False
示例:
>>> 'ABC'.isupper() # 全部字符全是大寫,返回 True True >>> 'Abc'.isupper() # 有大寫,有小寫,返回 False False >>> 'ABC中國'.isupper() # 全部字符全是大寫,幷包含中文,返回 True True >>> '中國'.isupper() # 只有中文,返回 False False >>> ''.isupper() # 空字符串,返回 False False
13.lower
方法
做用:將
S
中的全部大寫字符轉爲小寫
原型:S.lower() -> str
參數:無
返回值:新的字符串
示例:
>>> 'AbC'.lower() 'abc'
14.upper
方法
做用:將
S
中的全部小寫字符轉爲大寫
原型:S.upper() -> str
參數:無
返回值:新的字符串
示例:
>>> 'AbC'.upper() 'ABC'
15.isalnum
方法
做用:判斷
S
中全部的字符是否都是字母或數字
原型:S.isalnum() -> bool
參數:無
返回值:True
或False
示例:
>>> 'abc'.isalnum() # 英文字符,返回 True True >>> 'abc123'.isalnum() # 英文字符或數字,返回 True True >>> 'abc中國'.isalnum() # 英文字符或漢字,返回 True True >>> 'abc;'.isalnum() # 有符號';' 返回 False False >>> 'abc-'.isalnum() # 有符號'-' 返回 False False >>> ''.isalnum() # 空字符串,返回 False False
16.isalpha
方法
做用:判斷
S
中全部的字符是否都是字母
原型:S.isalpha() -> bool
參數:無
返回值:True
或False
示例:
>>> 'abc'.isalpha() # 都是英文字符,返回 True True >>> 'abc中國'.isalpha() # 英文字符和漢字,返回 True True >>> 'abc中國123'.isalpha() # 有數字,返回 False False >>> 'abc中國-'.isalpha() # 有符號,返回 False False >>> ''.isalpha() # 空字符串,返回 False False
17.isdecimal
方法
做用:判斷
S
中是否只包含十進制字符
原型:S.isdecimal() -> bool
參數:無
返回值:True
或False
示例:
>>> 'abc'.isdecimal() # 不包含數字,返回 False False >>> 'abc123'.isdecimal() # 除了數字,還有英文字符,返回 False False >>> '123'.isdecimal() # 只有數字,返回 True True >>> '123-'.isdecimal() # 除了數字,還有符號,返回 False False >>> ''.isdecimal() # 空字符串,返回 False False >>> '一二三'.isdecimal() False
18.isdigit
方法
做用:判斷
S
中是否只包含數字
原型:S.isdigit() -> bool
參數:無
返回值:True
或False
示例:
>>> '123'.isdigit() True >>> '123e'.isdigit() False
19.isnumeric
方法
做用:判斷
S
是否只由數字組成,數字能夠是羅馬數字,漢字數字等
原型:S.isnumeric() -> bool
參數:無
返回值:True
或False
示例:
>>> '一二三'.isnumeric() True >>> '壹貳叄'.isnumeric() True >>> '123'.isnumeric() True >>> 'abc'.isnumeric() False
20.isidentifier
方法
做用:判斷
S
是不是有效的Python 標識符
原型:S.isidentifier() -> bool
參數:無
返回值:True
或False
示例:
>>> 'abc'.isidentifier() True >>> '5abc'.isidentifier() # 不能以數字開頭 False >>> '_5abc'.isidentifier() True >>> ' _5abc'.isidentifier() # 不能以空格開頭 False >>> '_5abc;'.isidentifier() # 不能有標點符號 False
21.isprintable
方法
做用:判斷
S
中的字符,是否所有可打印
原型:S.isprintable() -> bool
參數:無
返回值:True
或False
示例:
>>> 'abc中國'.isprintable() True >>> 'abc\n'.isprintable() # 換行符不可見 False >>> 'abc\t'.isprintable() # 製表符不可見 False >>> 'abc\r'.isprintable() # 回車符不可見 False
22.isspace
方法
做用:判斷
S
中是否全是空白字符
原型:S.isspace() -> bool
參數:無
返回值:True
或False
示例:
>>> '\r\n\t '.isspace() True >>> 'abc\r\n\t '.isspace() False
23.center
方法
做用:返回一個總長度爲
width
的字符串,S
居中,其它字符以fillchar
填充
原型:S.center(width[, fillchar]) -> str
參數 width:新的字符串的總長度,當width
小於S
的長度時,直接返回S
參數 fillchar:填充字符,可省,默認爲空格
返回值:新的字符串
示例:
>>> 'AbCdE'.center(20, '*') '*******AbCdE********'
24.ljust
方法
做用:以
S
左對齊,返回一個長度爲width
的新字符串,當len(S)
小於width
時,用fillchar
字符填充
原型:S.ljust(width[, fillchar]) -> str
參數:同center
方法
返回值:新的字符串
示例:
>>> 'abc'.ljust(5, '*') 'abc**' >>> 'abc'.ljust(3, '*') 'abc'
25.rjust
方法
做用:相似
ljust
方法,本方法爲右對齊
原型:S.rjust(width[, fillchar]) -> str
參數:同center
方法
返回值:新的字符串
示例:
>>> 'abc'.rjust(5, '*') '**abc' >>> 'abc'.rjust(3, '*') 'abc'
26.zfill
方法
做用:效果同
rjust(width,'0')
原型:S.zfill(width) -> str
參數:width
爲新的字符串的總長度
返回值:新的字符串
>>> 'abc'.zfill(5) '00abc' >>> 'abc'.rjust(5, '0') '00abc'
27.format
方法
做用:用於格式化字符串,用
format
方法中的參數依次替代S
中的大括號{}
原型:S.format(*args, **kwargs) -> str
參數:任意參數列表
返回值:返回格式化後的字符串
示例:
>>> '{} {} {}'.format('hello', 'python', 123) # {} 中不寫下標 'hello python 123' >>> '{2} {0} {1}'.format('hello', 'python', 123) # {} 中寫下標 '123 hello python'
28.format_map
方法
做用:相似
format
方法的做用,只是接受的參數類型不一樣,大括號{}
中必須是字典
對象的鍵
原型:S.format_map(mapping) -> str
參數:一個字典類型的對象
返回值:返回格式化後的字符串
示例:
>>> '{a} {b}'.format_map({'a':1, 'b':2}) '1 2'
關於
字典
類型,將在後續章節詳細介紹
29.lstrip
方法
做用:從左開始,截去字符串
S
中的字符chars
,直到第一個不是chars
的字符
原型:S.lstrip([chars]) -> str
參數:chars
能夠是任意長度的字符串,每一個包含在chars
中的字符,都會被截去。可省,默認爲空格
返回值:新的字符串
示例:
>>> 'abcabcabc'.lstrip('b') 'abcabcabc' >>> 'abcabcabc'.lstrip('a') 'bcabcabc' >>> 'abcabcabc'.lstrip('ab') 'cabcabc' >>> 'abcabcabc'.lstrip('abc') ''
30.rstrip
方法
做用:從右開始,截去字符串
S
中的字符chars
,直到第一個不是chars
的字符
原型:S.rstrip([chars]) -> str
參數:同lstrip
返回值:新的字符串
示例:
>>> 'abcabcabc'.rstrip('b') 'abcabcabc' >>> 'abcabcabc'.rstrip('c') 'abcabcab' >>> 'abcabcabc'.rstrip('bc') 'abcabca' >>> 'abcabcabc'.rstrip('abc') ''
31.strip
方法
做用:先執行
lstrip
再執行rstrip
原型:S.strip([chars]) -> str
參數:同lstrip
返回值:新的字符串
示例:
>>> 'abcabcabc'.strip('b') 'abcabcabc' >>> 'abcabcabc'.strip('ba') 'cabcabc' >>> 'abcabcabc'.strip('bac') ''
32.strip
方法
做用:從左到右,以字符串
sep
來分割字符串S
,最多分割maxsplit
次
原型:S.split(sep=None, maxsplit=-1) -> list of strings
參數 sep:sep
能夠是任意長度的字符串,默認爲任意空白符
參數 maxsplit:分割的最大次數,默認不限次數
返回值:字符串列表
示例:
>>> 'a3bc-abc-ab ef\thh\nmn'.split() ['a3bc-abc-ab', 'ef', 'hh', 'mn'] >>> 'a3bc-abc-ab ef\thh\nmn'.split(maxsplit=2) ['a3bc-abc-ab', 'ef', 'hh\nmn'] >>> 'a3bc-abc-ab ef\thh\nmn'.split('a') ['', '3bc-', 'bc-', 'b ef\thh\nmn'] >>> 'a3bc-abc-ab ef\thh\nmn'.split('bc') ['a3', '-a', '-ab ef\thh\nmn']
33.rsplit
方法
做用:從右到左,以字符串
sep
來分割字符串S
,最多分割maxsplit
次
原型:S.rsplit(sep=None, maxsplit=-1) -> list of strings
參數:同strip
方法
返回值:字符串列表
示例:
>>> 'a3bc-abc-ab ef\thh\nmn'.rsplit() ['a3bc-abc-ab', 'ef', 'hh', 'mn'] >>> 'a3bc-abc-ab ef\thh\nmn'.rsplit(maxsplit=2) ['a3bc-abc-ab ef', 'hh', 'mn'] >>> 'a3bc-abc-ab ef\thh\nmn'.rsplit('bc') ['a3', '-a', '-ab ef\thh\nmn']
34.splitlines
方法
做用:對字符串
S
進行行分割
,換行符爲\r
,\n
,\r\n
原型:S.splitlines([keepends]) -> list of strings
參數:keepends
爲True
或False
,爲True 時保留換行符,爲False 時不保留換行符,默認爲False
返回值:字符串列表
示例:
>>> 'a3bc-abc-ab ef\thh\nmn'.splitlines() ['a3bc-abc-ab ef\thh', 'mn'] >>> 'a3bc-abc-ab ef\thh\nmn'.splitlines(True) ['a3bc-abc-ab ef\thh\n', 'mn']
35.encode
方法
做用:對
S
以encoding
指定的編碼格式進行編碼
原型:S.encode(encoding='utf-8', errors='strict') -> bytes
參數 encoding:以什麼編碼格式進行編碼,默認是utf-8
參數 errors:發生錯誤時的處理方式,默認爲strict
,其它可選值有ignore
,replace
,xmlcharrefreplace
返回值:S
的字節形式值
示例:
>>> s = '中國' >>> s.encode('utf8') b'\xe4\xb8\xad\xe5\x9b\xbd'
36.join
方法
做用:用於鏈接迭代器
iterable
中的全部元素,分隔符爲S
原型:S.join(iterable) -> str
參數:可迭代類型數據
返回值:新的字符串
示例:
>>> ','.join('abc') 'a,b,c' >>> '|'.join('abc') 'a|b|c'
關於
可迭代
類型,將在後續章節詳細介紹,這裏只須要知道字符串就是一種可迭代類型
37.startswith
方法
做用:判斷字符串
S[start:end]
是否以子串prefix
開頭
原型:S.startswith(prefix[, start[, end]]) -> bool
參數 prefix:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:True
或False
示例:
>>> 'abcabcabc'.startswith('abc') True >>> 'abcabcabc'.startswith('bc') False
38.endswith
方法
做用:判斷字符串
S[start:end]
是否以子串suffix
結尾
原型:S.endswith(suffix[, start[, end]]) -> bool
參數 suffix:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:True
或False
示例:
>>> 'abcabcabc'.endswith('bc') True >>> 'abcabcabc'.endswith('bcd') False
39.replace
方法
做用:從左到右,將
S
中的old
轉換成new
,最多轉換count
次
原型:S.replace(old, new[, count]) -> str
參數 old:源字符串,能夠是任意長度
參數 new:目標字符串,能夠是任意長度
參數 count:最多轉換count
次
返回值:新的字符串
示例:
>>> 'abcabcabc'.replace('a', '1') '1bc1bc1bc' >>> 'abcabcabc'.replace('a', '111') '111bc111bc111bc' >>> 'abcabcabc'.replace('ab', '1') '1c1c1c' >>> 'abcabcabc'.replace('a', '1', 2) '1bc1bcabc'
40.expandtabs
方法
做用:將
S
中的tab
轉爲空格,tab
即\t
原型:S.expandtabs(tabsize=8) -> str
參數 tabsize:一個tab
轉爲空格的個數與tab
以前的子串長度之和爲tabsize
,默認爲 8
返回值:新的字符串
示例:
>>> 'a\tbca\tbca\tbc'.expandtabs(4) 'a bca bca bc' >>> 'a\tbca\tbca\tbc'.expandtabs(4).replace(' ', '-') 'a---bca-bca-bc' # 爲了方便顯示空格的個數,將空格替換爲橫線 >>> 'a\tbca\tbca\tbc'.expandtabs(8) 'a bca bca bc' >>> 'a\tbca\tbca\tbc'.expandtabs(8).replace(' ', '-') 'a-------bca-----bca-----bc' # 爲了方便顯示空格的個數,將空格替換爲橫線
經過下圖能夠更好的理解expandtabs()
的含義:
41.maketrans
方法
做用:用於建立一個字符映射,常與
translate
方法配合使用
原型:maketrans(x, y=None, z=None, /)
參數:當只有1 個參數時,必須是一個字典。當有2 個參數時,是兩個字符串,且這兩個字符串的長度必須相同
返回值:一個字典類型的數據
示例:
>>> str.maketrans({'a':'1', 'b':'2', 'c':'3', 'd':'好'}) {97: '1', 98: '2', 99: '3', 100: '好'} >>> str.maketrans('abcd', '123好') {97: 49, 98: 50, 99: 51, 100: 22909}
42.translate
方法
做用:將字符串
S
使用table
進行替換
原型:S.translate(table) -> str
參數:是一個字典類型
返回值:新的字符串
示例:
>>> x = str.maketrans('abc', '123') >>> x {97: '1', 98: '2', 99: '3', 100: '好'} >>> 'axxxbxxxcxxx'.translate(x) # a->1 b->2 c->3 '1xxx2xxx3xxx'
43.partition
方法
做用:從左邊開始,將字符串
S
用sep
進行分隔,只會進行一次分隔
原型:S.partition(sep) -> (head, sep, tail)
參數:sep
能夠是任意長度的字符串
返回值:返回一個三元組(head, sep, tail),head
是分隔後的前半部分,tail
是後半部分,sep
是分隔符
示例:
>>> 'abcabcabc'.partition('c') ('ab', 'c', 'abcabc') >>> 'abcabcabc'.partition('bc') ('a', 'bc', 'abcabc') >>> 'abcabcabc'.partition('abc') ('', 'abc', 'abcabc')
44.rpartition
方法
做用:從右邊開始,將字符串
S
用sep
進行分隔,只會進行一次分隔
原型:S.rpartition(sep) -> (head, sep, tail)
參數:同partition
方法
返回值:同partition
方法
示例:
>>> 'abcabcabc'.rpartition('c') ('abcabcab', 'c', '') >>> 'abcabcabc'.rpartition('bc') ('abcabca', 'bc', '') >>> 'abcabcabc'.rpartition('abc') ('abcabc', 'abc', '')
(完。)
推薦閱讀:
Python 簡明教程 --- 4,Python 變量與基本數據類型
Python 簡明教程 --- 5,Python 表達式與運算符
[Python 簡明教程 --- 7,Python 字符串]http://www.javashuo.com/article/p-adulmskm-me.html)
歡迎關注做者公衆號,獲取更多技術乾貨。