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

猜你喜欢

转载自www.cnblogs.com/hacker001/p/10081887.html
今日推荐