1. 程式人生 > >python——字串內建函式

python——字串內建函式

當字串本身就含有\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