zoukankan      html  css  js  c++  java
  • 7 str字符串的内置函数

    特性:
    1、字符串一旦创建,不可修改
    2、一旦修改或者拼接,都会重新生成新字符串

    1. replace替换

    # def replace(self, old, new, count=None)
    print("***replace替换***")
    print("jasonjasonjason".replace("a","bb")) # jbbsonjbbsonjbbson
    print("jasonjasonjason".replace("a","bb",1)) # jbbsonjasonjason
    print("jasonjasonjason".replace("a","bb",2)) # jbbsonjbbsonjason


    2. 首字母大写

    # 将单词格式化为:首字母大写
    v1 = str1.capitalize()
    print(v1) # Alex


    3. 转小写

    # 将字符格式化为:全小写
    # casefold功能更强大,会将法语等其他语言的字符也全部小写
    v2 = str1.casefold() # alex
    v3 = str1.lower() # alex
    print(v2)
    print(v3)


    ***小写***

    # 转小写
    # 判断是否全小写
    print("***章节:小写***")
    print("LaSa".islower()) # False
    print("LaSa".lower()) # lasa
    print("LaSa".lower().islower()) # True

    ***大写***

    # ***章节:大写***
    # 转大写
    # 判断是否全大写
    print("***章节:小写***")
    print("LaSa".isupper()) # False
    print("LaSa".upper()) # LASA
    print("LaSa".upper().isupper()) # True

    4. 填充

    def center(self, width, fillchar=None) : 居中填充,字符串格式化固定宽度,并居中
    width:宽度
    fillchar:填充字符,默认为空格

    # def center(self, width, fillchar=None)
    # (居中)格式化固定宽度,并设定填充字符
    v4 = str1.center(20, "-")
    print(v4) # --------aLex--------


     ljust(self, width, fillchar=None) 左起,右填充
     rjust(self, width, fillchar=None) 右起,左填充

    # ljust(self, width, fillchar=None) 左起,右填充
    # rjust(self, width, fillchar=None) 右起,左填充
    print("填充")
    print("alex".ljust(20,"*")) # alex****************
    print("alex".rjust(20,"*")) # ****************alex

    5. 统计子序列总数

    def count(self, sub, start=None, end=None) 从start到end之间,统计子序列总数

    # 从start到end之间,统计子序列总数
    # sub: 子序列,即子字符串
    # start: 起始位置
    # end: 结束
    string1 = 'aLEx is a woman, who is a nurse'
    v5 = string1.count('is')
    print(v5)


    6. 判断是否以sub开头或结尾

    str1 = 'aLex'
    a = str1.startswith("a") # True
    print(a)
    e = str1.endswith("ex") # True
    print(e)


    7. 寻找子序列第一次 出现的位置

    find

    # 从[start,end)找子序列的第一个位置索引
    # 无该子序列,则返回-1
    test = "alexalex"
    v = test.find('ex',0,8) # 2
    print(v)

    8. 子序列的第一个位置索引

    index

    # 从[start,end)找子序列的第一个位置索引
    # index找不到子序列,则报异常
    v1 = test.index('ex')
    print(v1)

    9. 占位符:字符串中引用变量及变量赋值

    format(kvargs**)

    # 字符串中引用变量:{name}和{num}
    test = 'i am {name}, age {num}'
    print(test) # i am {name}, age {num}
    # 为字符串中变量赋值
    v = test.format(name='alex', num=19)
    print(v) # i am alex, age 19

    10. 字符串中引用变量

    format(args**)
    format_map(mapping)

    # 字符串中引用变量:{0}和{1}
    test = 'i am {0}, age {1}'
    print(test) # i am {0}, age {1}
    
    # 为字符串中变量赋值
    v = test.format('alex', 19)
    print(v) # i am alex, age 19
    
    # 字符串中引用变量:{name}和{num}
    test = 'i am {name}, age {num}'
    
    print(test) # i am {name}, age {num}
    
    # 为字符串中变量赋值
    v = test.format(name='alex', num=19)
    print(v) # i am alex, age 19
    
    v1 = test.format_map({"name":'alex', "num":19})
    print(v1) # i am alex, age 19


    11. 判断是否字母和数字组成的字符串

    isalnum()     isalpha()

    test1 = "usdfd839"
    # 是否字母和数字组成的字符串
    v = test1.isalnum() # True
    v1 = test1.isalpha() # False, 是否为字母序列
    strTest = "abddfj"
    s1 = strTest.isalpha() # True, 是否为字母序列

    12. 是否数字函数

    isdecimal() :键盘数字
    isdigit() :键盘数字、②等数字
    isnumeric() :键盘数字、②、贰

    numTest = "123"
    v1 = numTest.isdecimal() # True,是否键盘数字
    v2 = numTest.isdigit() # True,包括②等数字
    print("".isdigit()) # True
    print("".isdigit()) # False
    print("贰壹②".isnumeric()) # True
    print("".isdigit()) # False
    print("".isdecimal()) # False

    13. 制表,输出

    def expandtabs(self, tabsize: int = 8):制表,输出

    # def expandtabs(self, tabsize: int = 8)
    # expandtabs,制表: 
    断句 	对齐
    # tabsize:长度,使用空格填充对齐
    test2 = "username	email	password
    laiying	ying@qq.com	123
    laiying	ying@qq.com	123
    laiying	ying@qq.com	123"
    v2 = test2.expandtabs(20)
    print(v2)

    print(v2)如下:


    username email password
    laiying ying@qq.com 123
    laiying ying@qq.com 123
    laiying ying@qq.com 123

    14. 反转大小写

    # 反转大小写
    print("aLex".swapcase()) # AlEX
    print("ALex".swapcase()) # alEX


    15. 是否正确的标识符

    是否正确命名规则,也包括关键字def class

    # 是否正确的标识符:即是否正确命名规则,也包括关键字def class
    print("def".isidentifier()) # True
    print("class".isidentifier()) # True
    print("_123".isidentifier()) # True
    print("123".isidentifier()) # False
    print("userName".isidentifier()) # True

    16. 是否全部为可见字符

    isprintable() 是否全部为可见字符

    # isprintable() 是否全部为可见字符
    # 不可见字符: 	 
     01
    print("是否全部为可见字符")
    print("dfsdifhfd337&&***//".isprintable()) # True
    print("dfsdi
    fhfd33701&&***//".isprintable()) # False
    print("dfsdifhfd33701&&***//".isprintable()) # False

    17. 是否全部为空格

    isspace()是否全部为空格

    # isspace()是否全部为空格
    print(" ".isspace()) # True
    print(" 	".isspace()) # True
    print(" 01".isspace()) # False
    print(" 
    ".isspace()) # True

    18. 标题函数

    istitle() 判断是否为标题
    title() 转换为标题

    print("是否为标题(只能判断英文)")
    print("Process finished with exit code 0".istitle()) # False
    print("Process finished with exit code 0".title()) # Process Finished With Exit Code 0
    print("Process finished with exit code 0".title().istitle()) # True

    19.拼接:

    将字符串中的每一个元素按指定分隔符进行拼接

    print("将字符串中的每一个元素按指定分隔符进行拼接")
    print(" ".join("你是风儿我是沙")) # 你 是 风 儿 我 是 沙
    print("_".join("你是风儿我是沙")) # 你_是_风_儿_我_是_沙
    
    # 拼接字符串元素
    v = "_".join("abcde")
    
    # 拼接列表元素
    v = "_".join(['jason', 'rose']) # jason_rose

     

    20. 去除空格(包括 )

    去除指定字符序列
    去除匹配字符序列,优先最长字符序列,再依次删除匹配的短子序列

    print("去除空格(包括
     	) 和 去除指定字符序列")
    print(" haha ".lstrip())
    print(" haha ".rstrip())
    print(" haha ".strip())
    print(" haha ".strip())
    print("
     haha ".strip())
    print("dfhahadf".lstrip('df')) # hahadf
    print("dfhahadf".rstrip('df')) # dfhaha
    print("dfhahadf".strip('df')) # haha

    21. 递归匹配删除:

    去除匹配字符序列,优先最长字符序列,再依次删除匹配的短子序列
    ps:删除最长匹配后,剩余的序列再继续匹配删除

    print("dfhahadf".rstrip('9adf')) # dfhah
    print("dfhahadf".rstrip('9adfah')) # 全删:从右开始删adf,再删ah,再删h,再删df


    22. 将对应位置的字符进行替换

    # 构建映射表:tr_tab = str.maketrans("abcdef","123456")
    # 执行映射替换:srcStr.translate(tr_tab)
    # 将对应位置的字符进行替换
    # abcdef
    # 123456
    # 构建映射表:str.maketrans("abcdef","123456")
    # 执行映射替换:srcStr.translate(tr_tab)
    tr_tab = str.maketrans("abcdef","123456")
    strList = "fasdfjbaczxjivewr;oifajmewirkcvxweafo;dsapojnsafdk"
    tranList = strList.translate(tr_tab)
    print(tranList) # 61s46j213zxjiv5wr;oi61jm5wirk3vxw516o;4s1pojns164k

    23. 分隔

    def partition(self, sep) : 指定sep分隔,返回包含sep
    def rpartition(self, sep): 从右开始,指定sep分隔,返回包含sep
    def split(self, sep=None, maxsplit=-1): 指定sep分隔,返回不包含sep,分隔次数maxsplit
    def rsplit(self, sep=None, maxsplit=-1)

    # 分隔
    #
    print("***分隔***")
    print("testadfkajoeiawjfs".partition("a")) # ('test', 'a', 'dfkajoeiawjfs')
    print("testadfkajoeiawjfs".rpartition("a")) # ('testadfkajoei', 'a', 'wjfs')
    
    print("testadfkajoeiawjfs".split("a")) # ['test', 'dfk', 'joei', 'wjfs']
    print("testadfkajoeiawjfs".split("a",1)) # ['test', 'dfkajoeiawjfs']
    print("testadfkajoeiawjfs".split("a",2)) # ['test', 'dfk', 'joeiawjfs']
    print("testadfkajoeiawjfs".rsplit("a",2)) # ['testadfk', 'joei', 'wjfs']
    print("testadfkajoeiawjfs".split("a",6)) # ['test', 'dfk', 'joei', 'wjfs']
    print("testadfkajoeiawjfs".rsplit("a",6)) # ['test', 'dfk', 'joei', 'wjfs']
    
    print(v) # range(0, 100)
    
    in_str = "33+88"
    v1, v2 = in_str.split('+')
    print(in_str, '=', int(v1) + int(v2)) # 121

    24. 分隔,分页,换行

    def splitlines(self, keepends=None) : keepends是否保留换行符,默认False

    # 分隔,分页,换行
    # def splitlines(self, keepends=None) : keepends是否保留换行符
    print("fdahsf
    iensdka
    poieafl
    fewascsakdn".splitlines()) # ['fdahsf', 'iensdka', 'poieafl', 'fewascsakdn']
    print("fdahsf
    iensdka
    poieafl
    fewascsakdn".splitlines(False)) # ['fdahsf', 'iensdka', 'poieafl', 'fewascsakdn']
    print("fdahsf
    iensdka
    poieafl
    fewascsakdn".splitlines(True)) # ['fdahsf
    ', 'iensdka
    ', 'poieafl
    ', 'fewascsakdn']


    25. 长度 len(str)

    print(len("first")) # 5
    
    # Python3: len获取当前字符串中有几个字符
    # Python27:len获取字符串占几个字节,utf8单个中文3字节
    print(len("张五常")) # 3

    26. 下标索引

    字符串实际上就是字符的数组,所以也支持下标索引。
    如果有字符串name = 'abcdef',在内存中的实际存储如下:

    1、下标

    如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)

    name = 'abcdef'   

    print(name[0]) # a
    print(name[1]) # b
    print(name[-2]) //负数表示从右边开始:-2表示右边第二个

    ps:字符串中,不可通过下标修改值,只可通过下标取值

    # 字符串不支持更改元素值
    name = 'abcdef'
    name[3] = 33    # TypeError: 'str' object does not support item assignment


    2、切片(分片)

    切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
    切片的语法:[ 起始: 结束: 步长 ]
    步长:表示下标变化的规律。
    注意:选取的区间属于 [左闭 右开),即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
    ps: "结束"位,-1表示字符串序列最后一位,-2表示字符串序列倒数第二位,...以此类推。
    我们以字符串为例讲解。
    如果取出一部分,则可以在中括号[]中使用

    # -*- coding:utf-8 -*-
    '''
    python中下标从 0 开始
    '''
    name = 'abcdef'
    print(name[0:3]) # 取 下标0~2 的字符 abc
    print(name[:3]) # 取 下标0~2 的字符 abc
    
    print(name[0:5]) # 取 下标为0~4 的字符 abcde
    print(name[3:5]) # 取 下标为3、4 的字符 de
    
    print(name[2:]) # 取 下标为2开始到最后的字符 cdef
    print(name[1:-1]) # 取 下标为1开始 到 最后第2个 之间的字符 bcde
    
    print(name[1:-1:2]) # 取 下标为1开始 到 最后第2个之间[1,-1)从前往后步长为2 返回 bd
    print(name[::2]) # 取头-尾间的字符,步长为2 ace
    
    print(name[5:1:2]) # 返回空
    print(name[5:1:-2]) # [5,1)从后往前步长为-2 返回 fd
    print(name[1:5:2]) # [1,5)从前往后步长为2 返回 bd
    print(name[1:7:2]) # [1,7)从前往后步长为2 返回 bdf
    print(name[1:10:2]) # [1,10)从前往后步长为2 返回 bdf

    3、遍历字符串

    while循环遍历

    c_str = "索引,下标,获取字符串中的子串"
    index = 0
    print("===while===")
    while index < len(c_str):
    v = c_str[index]
    print(v)
    
    index += 1
    print("====while end===")

    for循环遍历

    print("***for***")
    for f_v in c_str:
    print(f_v)
    
    print("***for end***")
  • 相关阅读:
    anaconda安装
    MySQL数据库安装(windows 10 64bit)
    Redis数据库安装(windows 10 64bit)
    MongoDB可视化界面配置
    MongoDB安装(windows 10环境)
    四,程序流程控制之函数
    三,程序流程控制之顺序结构、分支结构与循环结构
    一,Python入门
    关于如何使用Python绘制基本数据图形模型
    关联分析
  • 原文地址:https://www.cnblogs.com/LIAOBO/p/13363722.html
Copyright © 2011-2022 走看看