python字符串内置方法
網(wǎng)上已經(jīng)有很多,自己操作一遍,加深印象。
dir
dir會(huì)返回一個(gè)內(nèi)置方法與屬性列表,用字符串'a,b,cdefg'測(cè)試一下
dir('a,b,cdefg')得到一個(gè)列表
['__add__','__class__','__contains__','__delattr__','__dir__','__doc__','__eq__','__format__','__ge__','__getattribute__','__getitem__','__getnewargs__','__gt__','__hash__','__init__','__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']雙下橫向開頭的字符串為內(nèi)部方法或私有方法。剩下的就是能用到的字符串方法了。
str.capitalize()
首字母大寫
In:'a,b,cdefg'.capitalize() Out: 'A,b,cdefg'str.casefold()
把所有字母變?yōu)樾?#xff0c;與lower類似,lower只支持英文字母A~Z,但是casefold可以把非英文變?yōu)樾憽?/p>
?
In:'B,b,cdEfg'.casefold() Out: 'b,b,cdefg'In:'B,b,cdEfg'.lower() Out: 'b,b,cdefg'官方:
str.casefold()
Return a casefolded copy of the string. Casefolded strings may be used for caseless matching.
Casefolding is similar to lowercasing but more aggressive because it is intended to remove all case distinctions in a string. For example, the German lowercase letter?'?'?is equivalent to?"ss". Since it is already lowercase,?lower()?would do nothing to?'?';?casefold()?converts it to?"ss".
The casefolding algorithm is described in section 3.13 of the Unicode Standard.
New in version 3.3.
In:'?'.lower() Out: '?'In:'?'.casefold() Out: 'ss'str.center(width[,?fillchar])
按照給定字符和總寬度居中顯示。比如,寬度為5的字符串‘11111’按照給定字符‘r’和總寬度8,顯示的是:5個(gè)原始字符居中,'r'填充,長(zhǎng)度為8的字符串。
In:'11111'.center(8,'r') Out: 'r11111rr'str.count(sub,?start,?end)
子字符串在原字符串中的個(gè)數(shù)。
sub -- 需要搜索的子字符串
start -- 字符串開始搜索的位置,不填默認(rèn)0
end -- 字符串結(jié)束搜索的位置,不填為最后
In:'r11111rr'.count('1',1,5) Out[39]: 4str.encode(encoding="utf-8",?errors="strict")
encoding -- 編碼方式
errors -- 錯(cuò)誤的處理方案。默認(rèn)為 'strict',是編碼錯(cuò)誤引起一個(gè)UnicodeError。 其他可能得值有 'ignore'--‘ ’, 'replace'--‘?’, 'xmlcharrefreplace'-- 可擴(kuò)展標(biāo)記語(yǔ)言替換, 'backslashreplace'--反斜杠替代 以及codecs.register_error() 注冊(cè)的所有值。
'黨'.encode('ascii')
Traceback (most recent call last):
File "<ipython-input-52-eb91b915d522>", line 1, in <module>
'黨'.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\u515a' in position 0: ordinal not in range(128)
'黨'.encode('ascii','replace') Out[48]: b'?''黨'.encode('ascii','ignore') Out[49]: b'''黨'.encode('ascii','xmlcharrefreplace') Out[50]: b'党''黨'.encode('ascii','backslashreplace') Out[51]: b'\\u515a'
str.endswith(suffix,?start,?end)
如果字符串含有指定的后綴返回True,否則返回False。
suffix -- 子字符串
start -- 長(zhǎng)字符串中的開始位置,默認(rèn)0
end -- 長(zhǎng)字符中結(jié)束位置,默認(rèn)最后
'B,b,cdEfg'.endswith('g') Out[54]: True'B,b,cdEfg'.endswith('Efg') Out[55]: True'B,b,cdEfg'.endswith('Ef') Out[56]: False'B,b,cdEfg'.endswith('Ef',1,8) Out[57]: Truestr.expandtabs(tabsize=8)
把Tab--‘\t’變?yōu)槠渌L(zhǎng)度的空格符,'\t'默認(rèn)為8,下面為官網(wǎng)的例子:
'01\t012\t0123\t01234'.expandtabs() Out[101]: '01 012 0123 01234''01\t012\t0123\t01234'.expandtabs(16) Out[102]: '01 012 0123 01234'str.find(str, beg=0, end=len(string))
檢測(cè)字符串中是否包含子字符串 str ,beg(開始)到end(結(jié)束) 如果包含子字符串,則返回開始的(最小的)索引值,否則返回-1。默認(rèn)為0和最后。
'B,b,cdEfcg'.find('c',6,9) Out[106]: 8'B,b,cdEfcg'.find('c') Out[107]: 4'B,b,cdEfcg'.find('h') Out[108]: -1str.rfind(str,?beg=0,?end=len(string))
用法與str.find一致,這個(gè)得到的是結(jié)束的(最大的)索引值。
str.format(*args,?**kwargs)
字符串格式化,通過(guò){}代替?zhèn)鹘y(tǒng)的%.*arg表示不可變參數(shù)--元組,**kwargs表示可變參數(shù)--字典
1.索引
{}里面為索引,0對(duì)應(yīng)format中第一個(gè)元素。
'我{}好人,你{}好人!'.format('是','不是') Out[111]: '我是好人,你不是好人!' '我{1}好人,你{0}好人!'.format('是','不是') Out[112]: '我不是好人,你是好人!'l = ['是','不是'] '我{0[0]}好人,你{0[1]}好人!'.format(l) Out[118]: '我是好人,你不是好人!'
2.關(guān)鍵字
'我{我}好人,你{你}好人!'.format(我='是',你='不是') Out[121]: '我是好人,你不是好人!'3.填充
'{0:*<10}'.format('黨') #總長(zhǎng)度為10,字符串在左面 Out[127]: '黨*********''{0:*>10}'.format('黨') #總長(zhǎng)度為10,字符串在右面 Out[128]: '*********黨''{0:*^10}'.format('黨') #總長(zhǎng)度為10,字符串居中 Out[129]: '****黨*****'
4.精度與進(jìn)制
'{0:.2f}'.format(1/3) Out[132]: '0.33''{0:b}'.format(8) #二進(jìn)制 Out[133]: '1000''{0:o}'.format(8) #八進(jìn)制 Out[134]: '10''{:,}'.format(111111111111111) #千分位格式化 Out[135]: '111,111,111,111,111'?str.format_map(mapping)
?與str.format(**mapping)類似,區(qū)別在于format_map直接用字典,而不是復(fù)制一個(gè)。下面是官方例子,其中Default是dict的一個(gè)子類。
class Default(dict): def __missing__(self, key): return key '{name} was born in {country}'.format_map(Default(name='Guide'))Out[18]: 'Guide was born in country'str.index(str,?beg=0,?end=len(string))
與str.find類似,區(qū)別在于,index如果找不到要尋到的字符,會(huì)得到ValueError,而find則返回-1。
'asdfghjkhl'.find('i') Out[24]: -1'asdfghjkhl'.index('i') Traceback (most recent call last):File "<ipython-input-25-af5de9246bb5>", line 1, in <module>'asdfghjkhl'.index('i')ValueError: substring not foundstr.rindex(str,?beg=0,?end=len(string))
用法與str.rindex一致,這個(gè)得到的是結(jié)束的(最大的)索引值。
str.isalum()
如果字符串至少有一個(gè)字符,并且所有字符都是字母或數(shù)字則返回 True,否則返回 False。
'asdfghjkhl'.isalnum() Out[26]: True'asdfg.. hjkhl'.isalnum() Out[27]: Falsestr.isalpha()
如果字符串至少有一個(gè)字符,并且所有字符都是字母或漢字則返回 True,否則返回 False。
str.isdecimal() ? ? str.isdigit() ? ? str.isnumeric()
3個(gè)都是判斷字符串是不是數(shù)字字符
差別:
str.isdecimal() ?表面上就是: str 是阿拉伯?dāng)?shù)字123456這樣的為True,是漢字?jǐn)?shù)字,羅馬數(shù)字為False,顯示的‘’不是‘’數(shù)字的b" "為Error。
str.isdigit() 除了漢字?jǐn)?shù)字為False,其他數(shù)字都為True,包括單字節(jié)數(shù)字b" "。
str.isnumeric() 除了單字節(jié)數(shù)字b" "是Error,所有的數(shù)字都為True。
str.isidentifier()
檢測(cè)字符串是否是字母開頭。
'asdfghjkhl'.isidentifier() Out[33]: True'1asdfghjkhl'.isidentifier() Out[34]: Falsestr.islower()
如果字符串中的所有字符都是小寫,并且至少有一個(gè)字符,則返回True,否則返回False。
'asdfghjkhl'.islower() Out[37]: True'asdfghjkHl'.islower() Out[38]: Falsestr.isprintable()
判斷是不是都為可見/可打印字符
'asdf\nghjkHl'.isprintable() Out[42]: False'asdfghjkHl'.isprintable() Out[43]: Truestr.isspace()
判斷是否為空格字符(注意不是空)
''.isspace() Out[44]: False' '.isspace() Out[45]: True'ss'.isspace() Out[46]: Falsestr.istitle()
字面上意思是:判斷字符串能不能做標(biāo)題
'Wo Shi Hao Ren 1'.istitle() Out[50]: True'Wo Shi Hao Ren 黨'.istitle() Out[51]: True'Wo Shi Hao ren'.istitle() Out[52]: False'Wo Shi Hao Ren'.istitle() Out[53]: Truestr.title()
把字符串變?yōu)闃?biāo)題格式。
'wo shi hao ren'.title() Out[140]: 'Wo Shi Hao Ren'str.isupper()
與str.islower()對(duì)應(yīng),如果字符串中的所有字符都是大寫,并且至少有一個(gè)字符,則返回True,否則返回False。
str.join(string)
以str作為分隔符,將string所有的元素合并成一個(gè)新的字符串。若string為空,則TypeError。
'111'.join('asdfghjkl') Out[55]: 'a111s111d111f111g111h111j111k111l''111'.join() Traceback (most recent call last):File "<ipython-input-56-5fa735339586>", line 1, in <module>'111'.join()TypeError: join() takes exactly one argument (0 given)str.ljust(width,fillchar)
得到一個(gè)原始字符串左對(duì)齊,并使用fiichar填充至指定長(zhǎng)度的新字符串。若指定的長(zhǎng)度小于原字符串的長(zhǎng)度則返回原始字符串。與format的填充用法相似。
width--指定長(zhǎng)度
fillchar--填充字符串,默認(rèn)空格字符。
'111'.ljust(50) Out[57]: '111 ''111'.ljust(50,'*') Out[58]: '111***********************************************' '{0:*<50}'.format('111') Out[62]: '111***********************************************'str.rjust(width,fillchar)
得到一個(gè)原始字符串右對(duì)齊,并使用fiichar填充至指定長(zhǎng)度的新字符串。若指定的長(zhǎng)度小于原字符串的長(zhǎng)度則返回原始字符串。與format的填充用法相似。(用法與ljust一致)
str.lower()
把所有字母轉(zhuǎn)化為小寫,與str.upper()相對(duì),與str.casefold()區(qū)別。
str.upper()
?把所有字母轉(zhuǎn)化為大寫。
str.lstrip(chars)
刪除str左邊所有出現(xiàn)在chars子字符串,chars為空時(shí)默認(rèn)空格字符。
' Wo Shi Hao ren '.lstrip() Out[67]: 'Wo Shi Hao ren ''Wo Shi Hao ren'.lstrip('fdsfsfW') Out[68]: 'o Shi Hao ren''Wo Shi Hao ren'.lstrip('fdsfsfw') Out[69]: 'Wo Shi Hao ren'str.rstrip(chars)
與str.lstrip(chars)對(duì)應(yīng)且方法一致,刪除str右邊所有出現(xiàn)在chars子字符串,chars為空時(shí)默認(rèn)空格字符。
str.strip(chars)
與str.lstrip(chars)和str.rstrip(chars)用法一致,這個(gè)是刪除兩邊所有出現(xiàn)在chars子字符串,chars為空時(shí)默認(rèn)空格字符。
'asdas'.strip('as') Out[124]: 'd'str.maketrans(intab,outtab)
得到一個(gè)用于str.translate()的映射,其實(shí)就是一個(gè)字典。
intab--是原始字符
outtab--翻譯后的字符,長(zhǎng)度與in相等
intab = "abcde" outtab = "12345" name = "asdwgwegb" x = ''.maketrans(intab, outtab) name.translate(x)Out[103]: '1s4wgw5g2'ord('a') #a的Unicode編碼 Out[104]: 97x Out[105]: {97: 49, 98: 50, 99: 51, 100: 52, 101: 53}x就是maketrans得到的字典,字典中的映射是字符對(duì)應(yīng)的Unicode編碼。
str.translate()
根據(jù)str.maketrans得到的字典翻譯str
str.partition(char) ? ?str.split(char,count)
作用都是字符串分割
str.partition(char)根據(jù)字符串char分割str得到一個(gè)3元素元組(只識(shí)別第一次出現(xiàn)的字符串)。char不能為空
'asdsawoainiasdaswoainid'.partition('woaini') Out[111]: ('asdsa', 'woaini', 'asdaswoainid')'asdsawoainiasdaswoainid'.partition('woainid') Out[112]: ('asdsawoainiasdas', 'woainid', '')?str.split(char,count) ?根據(jù)字符串char分割str得到一個(gè)列表(識(shí)別所有的char,并且char不包含在列表內(nèi)),char默認(rèn)為空格符。
char--子字符串
count--切割次數(shù),默認(rèn)全部。
'asdsawoainiasdaswoainid'.split('woaini') Out[113]: ['asdsa', 'asdas', 'd']'asdsawoainiasdaswoainid'.split() Out[114]: ['asdsawoainiasdaswoainid']'asdsawoainiasdaswo ainid'.split() Out[115]: ['asdsawoainiasdaswo', 'ainid']str.rpartition(char)
用法與str.partition(char)一致,str.rpartition(char)根據(jù)字符串char分割str得到一個(gè)3元素元組(只識(shí)別最后一次出現(xiàn)的字符串)。char不能為空
str.rsplit(char,count)
與str.split用法一致,但是str.rsplit是從后往前工作,str.split是簽到后工作。
'basdasa'.rsplit('as',1) Out[131]: ['basd', 'a']'basdasa'.split('as',1) Out[132]: ['b', 'dasa']str.splitlines(keepends)
str.splitlines(keepends) 按照行('\r', '\r\n', \n')分隔,得到各行元素的列表,如果keepends為 False,不包含換行符,如果為 True,則保留換行符。默認(rèn)為False。
'asdsa\r\nwo\rainia\r\nsdas\nw\roainid'.splitlines() Out[116]: ['asdsa', 'wo', 'ainia', 'sdas', 'w', 'oainid']'asdsa\r\nwo\rainia\r\nsdas\nw\roainid'.splitlines(False) Out[117]: ['asdsa', 'wo', 'ainia', 'sdas', 'w', 'oainid']'asdsa\r\nwo\rainia\r\nsdas\nw\roainid'.splitlines(True) Out[118]: ['asdsa\r\n', 'wo\r', 'ainia\r\n', 'sdas\n', 'w\r', 'oainid']str.replace(old,new,count)
把字符串中的 old(舊字符串) 替換成 new(新字符串),替換不超過(guò)count?次,count為空時(shí)不限次數(shù)。
'asdas'.replace('as','sa',1) Out[121]: 'sadas''asdas'.replace('as','sa') Out[122]: 'sadsa'str.startswith(start,end)
startswith() 方法用于檢查字符串是否是以指定字符串開頭,如果是返回True,否則返回False。start,end未指定范圍,默認(rèn)0,len(str)-1
'basdasa'.startswith('ba') Out[135]: True'basdasa'.startswith('ba',1,5) Out[136]: Falsestr.swapcase()
大寫變小寫,小寫變大寫
'basdasaDASDA'.swapcase() Out[138]: 'BASDASAdasda'str.zfill(width)
width--指定長(zhǎng)度
在字符串str前面填充字符串‘0’,使長(zhǎng)度為指定長(zhǎng)度width。
'asdas'.zfill(10) Out[141]: '00000asdas'?
參考:https://docs.python.org/3/library/stdtypes.html#string-methods
?
轉(zhuǎn)載于:https://www.cnblogs.com/dangww/p/7795510.html
總結(jié)
以上是生活随笔為你收集整理的python字符串内置方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大专大二结束去当兵应该什么时候报名?
- 下一篇: LCA模板