字符串

join() map() split() rsplit() splitlines() partiton() rpartition() upper() lower() swapcase() captalize() title() center() ljust() rjust() zfill() replace() strip() index() rindex() count() find() rfind() startswith() endswith() isalnum() isalpha() isnumeric() isdigit() isidentifier() isspace()

  • 不可变对象

  • 可以将其他对象转化成字符串

  • 在内存中连续存在,属于顺序表

  • 可以索引,但是索引不能超界,可以迭代,例如:

    str_a = 'slfjlsvnemgekdlsd'
    for c in str_a:
    print(c) # 打印出来's' 'l' 'f' 等等单个字符
    • ‘a’.join(iterable) 用’a’把iterable中的字符串元素连在一起,iterable是可迭代对象,但是可迭代对象中的每一个元素都要是字符串才可以,例如:

    t1 = ('a','b','c','d')
    '&'.join(t1) # 返回'a&b&c&d’ ,不会报错 t2 = ['a','b',5,'d']
    #.join(t2) # 会报错,因为t1中的5不是字符串
    • map(str,range(5)) 把可迭代对象转换成字符串,但是是惰性求值,返回的也是一个可迭代对象,直接打印出来看不出内容,必须将其转换成其他不是惰性求值的结构才可能打印出内容

    t1 = (1,2,3,4,5)
    x = map(str,t1) # 这里将t1中的每个元素都转换成str类型
    print(list(x)) # 打印出来得到,['1','2','3','4','5']
    • ‘a’+‘b’ [1]+[2] ‘a’ *5 [‘ab’] * 3

    'a'+'b'  # 返回'ab'
    [1]+[2] # 返回[1,2]
    'a' * 5 # 返回'aaaaa'
    ['ab'] * 3 # 返回['ab','ab','ab']
    • split() 默认按照空白字符切割,如果多个空白字符连续,认为是一个,立即返回一个列表

    • rsplit() 默认按照空白字符串切割,从右边开始切割,返回的字符串不改变原来顺序,可以设置maxsplit = x,确定切几刀

    'a         b'.split()  # 返回['a','b']
    'a \t \r\n y '.split() # 返回['a','y']
    'a \t \r\n y'.split('y') # 按照'y'来切割,返回['a \t \r\n ','']
    'a y'.split(' ',maxsplit = 2) # 按照' '来切,切2刀,返回['a','','',' y']
    'alfjlajggd'.rsplit('g',maxsplit = 1) # 按照'g'字符串进行切割,最大切一刀,返回['alfjlajg','d']
    • splitlines() 按照换行来切

    '\nabc'.splitlines()  # 返回['','abc']
    '\nabc\n'.splitlines() # 返回['','abc'],字符串最后如果是换行符不切,开头是换行符切
    '''
    asdf
    d
    '''.splitlines() # 返回['','asdf','d'] 开头换行了切,末尾换行了不切
    '''\
    asdf
    d
    '''.splitlines() # 返回['asdf','d'] 在\后面换行则不需要切
    • partition(‘x’) 'x’不能省略,按照’x’进行切割,只能切一刀,返回一个三个元素的元组

    • rpartition(‘x’) 从右开始切割

    'sdfafg'.partition('f')  # 返回('sd','f','afg')  中间元素就是指定的切割符
    'sdfafg'.rpartition('f') # 返回('sdfa','f','g')
    • ‘abbc’.upper() == str.upper(‘abbc’) ‘Afsl’.lower() ‘FdsGdsl’.swapcase() ‘user-agent’.captalize() ‘user-agent’.title()

    'abbc'.upper() == str.upper('abbc')   # 返回'ABBC'
    'Afsl'.lower() # 返回'afsl'
    'FdsGdsl'.swapcase() # 返回'fDSgDSL'
    'user-agent'.captalize() # 返回'User-agent'
    'user-agent'.title() # 返回'User-Agent'
    • ‘abc’.center(10,’%’) 十个位置放’abc’,空余位置由’%'填充,'abc’居中,如果不指定填充多余位置的字符,则由空白字符来填充多余的位置

    • ‘abc’.ljust(10,’&’) 十个位置放’abc’,空余位置由’&'填充,'abc’左对齐,如果不指定填充多余位置的字符,则由空白字符来填充多余的位置

    • ‘abc’.rjust(10,’&’) 十个位置放’abc’,空余位置由’&'填充,'abc’右对齐,如果不指定填充多余位置的字符,则由空白字符来填充多余的位置

    • ‘abc’.zfill(10) 十个位置放’abc’,空余位置由’0’填充,'abc’右对齐

    • ‘a,b’.replace(’,’,’ ‘) 返回新字符,把’,‘换成’ ’

    'abc'.center(10,'$')  # 返回'$$$abc$$$$'
    'abc'.center(10) # 返回' abc '
    'abc'.ljust(10,'%') # 返回'abc%%%%%%%'
    'abc'.ljust(10) # 返回'abc '
    'abc'.rjust(10,'@') # 返回'@@@@@@@abc'
    'abc'.rjust(10) # 返回' abc'
    'abc'.zfill(10) # 返回'0000000abc'
    'a,b'.replace(',',' ') # 返回'a b'
    • strip() 默认去掉字符串的两端空白字符,返回新字符串,如果指定参数怎从两端起去掉指定参数字符,知道没有对应参数停止

    'i am very very good'.strip('i doa')  # 返回'm very very g'
    ' abc '.strip() # 返回'abc'
    • index(value) count(value) find(value) index找不到返回valueerror,找到返回正索引,count找不到返回0,找到了返回出现次数,find找不到返回-1,找到了返回正索引,都可以指定起点和终点,如果只指定一个起点,默认终点是最后,正负索引都可以,但是要求开始位置在结束位置左侧

    'sljfjld'.index('a')  # 返回valueerror  没找到
    'sljfjld'.index('s',1,-3) # 返回valueerror,虽然有's',但是没在起始和终点区间内
    'sljfjld'.index('s') # 返回正索引0
    'sljfjld'.count('l') # 返回'l'出现的次数2
    'sljfjld'.count('s',1,-3) # 返回's'出现的次数0
    'sljfjld'.index('a',1,4) # 找不到返回-1
    • startswith(value) endswith(value) 验证字符串是否以value开头或者结束,返回bool值,可以指定区间

    'adkjfls'.startswith('abc')   # 返回False
    'abcsdlfj'.startswith('abc') # 返回True
    'abcsdlfj'.startswith('abc',1,4) # 返回False
    'adkjfls'.endswith('abc') # 返回False
    'abcsdlfj'.endswith('fj') # 返回True
    'abcsdlfj'.endswith('fj',-4,-2) # 返回False
    • ‘abc123’.isalnum() 验证是否只有字母和数字,’adsa123‘.isnumeric() 验证是否只有数字 , ‘df213’.isdigit() 验证是否只有数字 ‘sfas24’.isidentifier() 验证是否是标识符 ’ '.isspace() 验证是否只包含空白字符串
    'abc23'.isalnum()  # 返回True
    '234234'.isnimeric() # True
    '234234'.isdigit() # True
    'stu_tom'.isidentifier() # True
    ' d'.isspace() # False
    ' '.isspace() # True

总结

前面开头讲了字符串是不可变对象,而我们这些内置函数绝大多数都有返回值,所以这些函数的返回值都是新生成了一个字符串,对原字符串没有影响,因为原字符串无法修改

最新文章

  1. 本周博客--WinForm线程初步 2014-10-31 09:15 54人阅读 评论(0) 收藏
  2. CE驱动动态加载卸载
  3. sp,文件以及SDcard存储
  4. CACTI表结构和数据被动获取
  5. 2015年11月25 Java基础系列(二)Thread Runnable线程初级讲解
  6. 苹果5S指纹扫描识别传感器Touch ID有利于iPhone的安全性
  7. 关键字 extern
  8. (转)Eclipse 远程调试 WebSphere Application Server (WAS)
  9. inPolygonTest学习和C++实现
  10. Linux 安装Nginx详细图解教程
  11. struts之拦截器
  12. yahoo给出的关于网站优化的建议
  13. Azure MySQL PaaS (3) 创建MySQL异地只读数据库 (Master-Slave)
  14. 《java.util.concurrent 包源码阅读》21 CyclicBarrier和CountDownLatch
  15. Linux内核最新的连续内存分配器(CMA)——避免预留大块内存【转】
  16. align-item 和 align-content的区别
  17. 78-WS2812-Library (STM32F4)
  18. Centos 7 minimal install 后的基础配置
  19. wDatepicker97的用法(点击事件联动)
  20. ZCMU训练赛-H(模拟)

热门文章

  1. 我最推荐的一张Java后端学习路线图,Java工程师必备
  2. js对象参考手册 -戈多编程
  3. for循环练习题1——水仙花数
  4. File类&递归
  5. 第3章(2) Linux下C编程风格
  6. formidable处理提交的表单或文件的简单介绍
  7. Beanutils.copyProperties( )使用详情总结
  8. opencv::模糊图像2
  9. MariaDB数据库
  10. CSAPP:逆向工程【缓冲区溢出攻击】