python——字串內建函式
阿新 • • 發佈:2018-12-07
當字串本身就含有\n之類的,可以用轉義符、行顯示(在字串引號前面加r)、repr(str)三種方法。
字串內建方法
字串內建方法:
1. capitalize(...)
S.capitalize() -> str
字串的首字母大寫
2. casefold(...)
S.casefold() -> str
Return a version of S suitable for caseless comparisons.
再補充;
3. center(...)
S.center(width[, fillchar]) -> str 指定字元個數,使字串居中,不足該個數的用指定的字元補充。預設用空格補充。 例如: a='Wjz wjk wz zs' print(a.center(50,'*'))
4. count(...)
S.count(sub[, start[, end]]) -> int
統計指定字元在字串中的個數;可以指定始末位置;
例如:
a='Wjz wjk wz zs'
print(a.count('w',4,5))
5. encode(...)
S.encode(encoding='utf-8', errors='strict') -> bytes
將字串轉碼為二進位制模式;decode是解碼為unicode;
6. endswith(...)
S.endswith(suffix[, start[, end]]) -> bool 判斷字串是否是以指定的字元結尾,返回True或者False;也可以指定始末位置;位置引數同樣是顧首不顧尾; 例如: a='Wjz wjk wz zs' print(a.endswith('w',3,5))
7. expandtabs(...)
S.expandtabs(tabsize=8) -> str
將製表符tab換成空格,預設是一個製表符8個空格;
8. find(...)
S.find(sub[, start[, end]]) -> int
查詢指定字元在字串中的位置;從左邊開始找,返回第一個指定字元的位置;如果沒有找到,則返回負一
9. format(...)
S.format(*args, **kwargs) -> str
-
字串格式化,用{}代替.
例如:
info = 'my name is {},age {}'.format('wz',27) print(info) # 列印 my name is wz,age 27 info = 'my name is {1} ,age {0} {1}'.format(27,'wz') print(info) # 列印 my name is wz,age 27 wz wz = ['wz',27] info = 'my name is {},age {}'.format(*wz) print(info) # 列印 my name is wz,age 27 dict = {'name':'wz','age':27} info = 'my name is {name},age {age}'.format(**dict) print(info) # 列印 my name is wz,age 27 info = 'my name is {name},age {age}'.format(name='wz',age=27) print(info) # 列印 my name is wz,age 27 wzinfo = ['wz',27] info = 'my name is {0[0]},age {0[1]}'.format(wzinfo) print(info) # 列印 my name is wz,age 27
-
填充
格式: :[填充字元][對齊方式 <^>][寬度] 冒號前面為0,可以省略;<為左對齊;^為居中;>為右對齊; 例如: :#>20 表示 寬度是20,右對齊,以#補充空格;
例如:
s = 'wjz' print('{:*>10}'.format(s)) # :前面的0可以省略;輸出 *******wjz s = 'wjz' print('{:*^10}'.format(s)) # :前面的0可以省略;輸出 ***wjz****
-
精度與進位制轉換
同樣冒號前的0可省略;
n = 1/3 print('{0:.2f}'.format(n)) # 按指定精度取浮點型值; 列印 0.33 n = 10 print('{0:b}'.format(n)) # 將10轉換為二進位制;列印 1010 n = 10 print('{0:o}'.format(n)) # 將10轉換為八進位制;列印 12 n = 10 print('{0:x}'.format(n)) # 將10轉換為16進位制;列印 a n = 10454536484 print('{:,}'.format(n)) # 千分位格式化;一般金額使用;列印 10,454,536,484
10. format_map(...)
S.format_map(mapping) -> str
Return a formatted version of S, using substitutions from mapping.
The substitutions are identified by braces ('{' and '}').
再補充吧;
11. index(...)
S.index(sub[, start[, end]]) -> int
查詢指定字元在字串中的位置;從左邊開始找,返回第一個指定字元的位置;如果沒有找到,則報錯異常;和find方法差不多。rindex為從右邊開始查詢第一個,返回位置碼;
12. isalnum(...)
S.isalnum() -> bool
如果字串中都是字母和數字組成的,則返回True;否則返回False;
13. isalpha(...)
S.isalpha() -> bool
判斷字串是否全部是字母;如果是,返回True;否則返回False;
14. isdecimal(...)
S.isdecimal() -> bool
判斷字串是否全是整型數字組成,如果是返回True;否則返回False;一直沒分清isdecimal和isdigit的區別;
15. isdigit(...)
S.isdigit() -> bool
字串不為空,且都為數字組成(支援二進位制數字),則返回True;否則返回False;
例如:
a='123'
print(a.isdigit()) True
a=b'123'
print(a.isdigit()) True
16. isidentifier(...)
S.isidentifier() -> bool
如果字串是一個合法的識別符號,則返回True;否則返回False;合法的識別符號是以字母或下劃線開頭的字串;
17. islower(...)
S.islower() -> bool
如果字串中所有的字元都是小寫,則返回True;否則返回False
18. isnumeric(...)
S.isnumeric() -> bool
如果字串中的字元都是數字,且不為空,則返回True;否則返回False
19. isprintable(...)
S.isprintable() -> bool
如果字串中的字元都為真,則返回True,否則返回False
20. isspace(...)
S.isspace() -> bool
如果字串中字元都是空格,且不為空,則返回True;否則返回False
21. istitle(...)
S.istitle() -> bool
判斷字串是否是標題;字串中每個單詞的首字母為大寫(大寫字母前面可以有數字和空格),則返回True;否則返回False
22. isupper(...)
S.isupper() -> bool
字串中的所有字母都是大寫,則返回True;否則返回False
23. join(...) *重要
S.join(iterable) -> str
把指定的字串隔開,間隔是字串S;這裡指定的間隔符可以是列表、元組。常用來進行字串拼接;
例如:
a='###'
print(a.join('wjz')) # 輸出 w###j###z
a=''
n1 = 'www'
n2 = 'bashrunning'
n3 = 'com'
url = a.join([n1,'.',n2,'.',n3])
print(url) # 輸出 www.bashrunning.com
24. ljust(...)
S.ljust(width[, fillchar]) -> str
指定長度,字串左對齊,不足長度用指定的字元填充;預設用空格補充
例如:
a='wjz'
print(a.ljust(10,'*')) # 輸出 wjz*******
25. lower(...)
S.lower() -> str
將字串中的大寫轉換為小寫;返回該字串小寫;
例如:
a='Wjz'
print(a.lower()) # 返回 wjz
26. lstrip(...)
S.lstrip([chars]) -> str
去除字串左邊的空格或製表符
27. partition(...)
S.partition(sep) -> (head, sep, tail)
以指定的字元為分隔符,在字串中從左開始搜尋第一個匹配分隔符;返回分隔符前面和分隔符、後面三個部分;如果分隔符沒有找到,則返回字串本身和兩個空字串。返回結果是一個元組;
例如:
a='Wjz Wjk'
print(a.partition('j')) # 返回 ('W', 'j', 'z Wjk')
a='Wjz Wjk'
print(a.partition('t')) # 返回 ('Wjz Wjk', '', '')
28. replace(...)
S.replace(old, new[, count]) -> str
從左往右替換字串中的字元;可以指定替換幾個,預設替換所有匹配的;
例如:
a='Wjz Wjk wz'
print(a.replace('z','l',1)) # 指定替換一個;返回 Wjl Wjk wz
29. rfind(...)
S.rfind(sub[, start[, end]]) -> int
從右邊開始查詢指定的第一個字元;返回該字元的位置;如果沒有找到,則返回負一;
例如:
a='Wjz Wjk wz'
print(a.rfind('z')) # 返回 9
a='Wjz Wjk wz'
print(a.rfind('z',2,5)) # 同時指定查詢的範圍;返回 2
30. rindex(...)
S.rindex(sub[, start[, end]]) -> int
查詢指定字串的位置,從右邊開始查詢;如果沒有找到,則返回異常
31. rjust(...)
S.rjust(width[, fillchar]) -> str
指定長度,字串右對齊,不足長度用指定的字元填充;預設用空格補充
例如:
a='wjz'
print(a.rjust(10,'*')) # 輸出 *******wjz
32. rpartition(...)
S.rpartition(sep) -> (head, sep, tail)
以指定的字元為分隔符,在字串中從右開始搜尋第一個匹配分隔符;返回分隔符前面和分隔符、後面三個部分;如果分隔符沒有找到,則返回兩個空字串和字串本身。返回結果是一個元組;
例如:
a='Wjz Wjk'
print(a.rpartition('j')) # 返回 ('Wjz W', 'j', 'k')
a='Wjz Wjk'
print(a.rpartition('t')) # 返回 ('','','Wjz Wjk')
33. rsplit(...)
S.rsplit(sep=None, maxsplit=-1) -> list of strings
指定分隔符,分隔字串;返回一個列表;預設是以空格為分隔符;預設從右往左匹配所有分隔符;可以指定匹配幾個;
例如:
a='Wjz wjk wz'
print(a.rsplit('z',1)) # 返回 ['Wjz wjk w', '']
34. rstrip(...)
S.rstrip([chars]) -> str
去除字串右邊的空格或製表符
35. split(...)
S.split(sep=None, maxsplit=-1) -> list of strings
指定分隔符,分隔字串;返回一個列表;預設是以空格為分隔符;預設從左往右匹配所有分隔符;可以指定匹配幾個;
例如:
a='Wjz wjk wz'
print(a.split('z',1)) # 返回 ['Wj',' wjk wz']
36. splitlines(...)
S.splitlines([keepends]) -> list of strings
將字串的每一行當做一個元素,返回一個列表;預設為False,不包含換行符;
例如:
a='''wjz
wjk
wz
'''
print(a.splitlines(True)) # 返回 ['wjz\n', 'wjk\n', 'wz\n']
37. startswith(...)
S.startswith(prefix[, start[, end]]) -> bool
判斷字串是否以指定的字元開始的。如果是,返回True;否則返回False;可以指定判斷始末位置,預設從0位置開始;
例如:
a='''wjz wjk wz'''
print(a.startswith('wjz')) # 返回 True
a='''wjz wjk wz'''
print(a.startswith('wz')) # 返回 False
a='''wjz wjk wz'''
print(a.startswith('wjk',4)) # 返回 True 這裡只指定了開始位置,未指定結尾位置,預設是-1 ;
這裡的prefix可以是元組;例如:
a='''wjz wjk wz'''
print(a.startswith(('wjz','wjk'),4)) # 返回 True 是元組中元素之一開頭的,即為 True
38. strip(...)
S.strip([chars]) -> str
預設去除字串開頭結尾的空格和製表符;可以指定要去除的字元;
39. swapcase(...)
S.swapcase() -> str
反轉字串中字母的大小寫;大寫變成小寫,小寫變成大寫;
40. title(...)
S.title() -> str
將字串變成標題;即將字串中的每個單詞的第一個字母大寫;
41. translate(...)
S.translate(table) -> str
根據一一對映關係(比如字典,把key替換為value)替換。字典中必須是ASCII碼錶示。
例如:
str = 'bashrunning.com'
dic1 = {'a':1,'b':2,'c':3} # 需要把key、value都轉換為ASCII碼錶示,dic2就是dic1的ASCII表示形式
dic2 = {ord('a'):ord('1'),ord('b'):ord('2'),ord('c'):ord('3')} # dic = {97:49,98:50,99:51}
print(str.translate(dic2)) # 列印 21shrunning.3om
-
如果是bytes型別的字串,還可以先刪除,再按規則替換。
bytes.translate(table[, delete])
例如:
# 若table引數為None,則只刪除不對映
print(b'bashrunning.com'.translate(None, b'.com')) # 列印 b'bashrunning'
# 若table引數不為NONE,則先刪除再對映
bytes_tabtrans = bytes.maketrans(b'abc', b'123')
print(b'bashrunning.com'.translate(bytes_tabtrans, b'.com')) #列印 b'21shrunning'
注意,所有的都是bytes型別。
42. maketrans(x, y=None, z=None, /)
Return a translation table usable for str.translate().
假如是x/y兩個引數,且兩個引數的長度一致,則生成一一對映關係;否則報異常。如果是隻有x一個引數,則x必須是一個字典(ASCII表示的字典)。
在python3中,maketrans為str的內建函式。在python2中,是一個函式 intab = "aeiou" outtab = "12345" trantab = str.maketrans(intab,outtab) print(trantab) # 列印 {97: 49, 101: 50, 105: 51, 111: 52, 117: 53} str = "this is string example....wow!!!"; print(str.translate(trantab))
43. upper(...)
S.upper() -> str
將字串中的小寫字母變成大寫
44. zfill(...)
S.zfill(width) -> str
指定寬度,在字串的左邊用0填充;如果字串長度大於等於指定的寬度,則返回字串本身;
例如:
a='Wjz wjk'
print(a.zfill(10)) # 輸出 000Wjz wjk
a='Wjz wjk'
print(a.zfill(6)) # 輸出 Wjz wjk
附錄:
isdigit、isdecimal、isnumeric 三個方法區別
這三個方法都是測試字串是否都是數字組成。但是除了阿拉伯數字外,還有羅馬數字、二進位制數字等區別。
- 支援二進位制數字的方法: isdigit
- 支援羅馬數字的方法: isdigit 、isnumeric
- 支援漢字數字大寫的方法: isnumeric