zoukankan      html  css  js  c++  java
  • python之字符串及其方法---整理集

    字符串方法

    1.capitalize方法:字符串首字母大写

    举例:

    test="alex"
    v=test.capitalize()
    print(v)
    返回结果:
    Alex

     

    2.casefold和lower方法,都是把字符串变成小写,区别是lower应对一般情况,而casefold使用范围更广

    举例:

    test="aLex"
    v1=test.casefold()
    print(v1)
    v2=test.lower()
    print(v2)
    返回结果:
    alex
    alex

     

    3.center方法:设定一个总长度,将字符串放置在中间,如果设定的长度多于字符串的长度,则使用指定的内容填充,默认是空格,并且只允许填充1个字符

    格式:
    count(<长度>[,<填充字符>])
    举例:

    test="aLex"
    v=test.center(20)
    返回结果:
            aLex        

    举例:

    test="aLex"
    v=test.center(20,"*")
    print(v)
    返回结果:
    ********aLex********

     

    4.count方法:在字符串中查找指定字符出现的次数,如果不指定起始及结束位置,则默认从头开始

    格式:
    count(<指定字符串>[,<起始位置>[,<结束位置>]])
    注意:起始位置从1开始计算,而非0
    举例:

    test="aLexalex"
    v=test.count('e')
    print(v)
    返回结果:
    2
    test="aLexalex"
    v=test.count('e',5)   #从第5位开始计算
    print(v)
    返回结果:
    1
    test="aLexalex"
    v=test.count('e',2)   #从第2位开始计算
    print(v)
    返回结果:
    2
    
    test="aLexalex"
    v=test.count('e',2,5)  #从第2位开始到第5位结束
    print(v)
    返回结果:
    1
    
    test="aLexalex"
    v=test.count('e',6,7)  #从6到7之间查找,起始位置是从1开始计算
    print(v)
    返回结果:
    1

    5.endswith方法:指定子串,判断字符串结尾是否是给定的字符串,返回布尔值
    格式:
    endswith(<指定子串>[,[开始位置],[结束位置]])

    举例:

    test="alex"
    v=test.endswith('e')
    print(v)
    返回结果:
    False
    
    test="alex"
    v=test.endswith('x')
    print(v)
    返回结果:
    True
    
    test="alex"
    v=test.endswith('ex')
    print(v)
    返回结果:
    True
    
    test="alexstkoex"
    v=test.endswith('ex',2,6)
    print(v)
    返回结果:
    False
    
    test="alexstkoex"
    v=test.endswith('ex',1,4)   #起始位置是从1开始计算
    print(v)
    返回结果:
    True

    6.find方法:寻找指定子串在字符串中的位置,返回值是位置

    五星方法:★★★★★
    格式:
    find(<指定子串>[,起始位置][,结束位置])
    注意:起始位置从0开始计算,而非1
    举例:

    test="alexstlkoex"
    v=test.find('l')
    print(v)
    返回结果:
    1
    
    test="alexstlkoex"
    v=test.find('e')
    print(v)
    返回结果:
    2
    
    test="alexstlkoex"
    v=test.find('e',2,4)
    print(v)
    返回结果:
    2
    
    test="alexstlkoex"
    v=test.find('l',1,6)  #指定末尾是6,不计算,也就是说指定位置是从1开始至6,并不包含6
    print(v)
    返回结果:
    1

    7.format方法:格式化字符串,将字符串中的占位符替换为指定变量的值,变量以大括号括起来
    格式:
    format(<变量表达式>[,<变量表达式>]...)
    举例:

    test='i am {name}'
    print(test)
    v=test.format(name='alex')
    print(v)
    返回结果:
    i am {name}
    i am alex

    举例:

    test='i am {name}, age is {age}'
    print(test)
    v=test.format(name='alex',age='19')
    print(v)
    返回结果:
    i am {name}, age is {age}
    i am alex, age is 19

    举例:也可以根据出现的顺序替换

    test='i am {0}, age is {1}'
    print(test)
    v=test.format('alex','19')
    print(v)
    返回结果:
    i am {0}, age is {1}
    i am alex, age is 19

    8.format_map方法:与format类似,只不过以key-value的样式传入变量的值
    格式:
    format_map({"key":'value'[,"key":'value',...]})
    举例:

    test='i am {name}, age {a}'
    v1=test.format(name='df',a=10)
    print(v1)
    v2=test.format_map({"name":'alex',"a":19})
    print(v2)
    返回结果是:
    i am df, age 10
    i am alex, age 19

    9.index方法:与find类似,也是查找位置,区别在于index如果没找到会报错,find方法如果没找到返回-1

    10.isalnum方法:用来判断字符串中是否只包含数字和字母,返回布尔值
    格式:
    isalnum()
    举例:

    test="usb2.0+usb3.0"
    v=test.isalnum()
    print(v)
    返回值是:
    False
    
    test="usb2.0usb3.0"
    v=test.isalnum()
    print(v)
    返回值是:
    False
    
    test="usb2.0usb3"
    v=test.isalnum()
    print(v)
    返回值是:
    False
    
    test="usb20usb30"
    v=test.isalnum()
    print(v)
    返回值是:
    True
    
    test="usbusb"   #只包含字符,返回True
    v=test.isalnum()
    print(v)
    返回值是:
    True
    
    test="1122"   #只包含数字,返回True
    v=test.isalnum()
    print(v)
    返回值是:
    True

     

    11.expandtabs方法:常用于断句。
    具体作用:指定制表符宽度,在字符串中按照宽度一次读入,如果读入之中没有制表符,则再次读入,如果读入中有制表符( ),则把制表符用空格补充,补充的数量根据指定宽度减去制表符之前读入的字符串长度

    格式:
    expandtabs(<num>)
    举例

    str1="uyiujoiuerwje	0021jk	jljsdf"
    v=str1.expandtabs(6)
    返回结果:
    uyiujoiuerwje     0021jk      jljsdf

    执行过程如下:
    设定读入宽度为6
    开始读入6个字符:uyiujo这期间没有制表符,不操作

    继续读入6个字符:iuerwj这期间没有制表符,不操作

    继续读入6个字符:e 在读入期间碰到了制表符,则停止读入,由于制表符之前有个字符e占用一个位置,则其余5个位置用空格代替,最后就是e+5个空格

    继续读入6个字符:0021jk这期间没有碰到制表符,不操作

    继续读入6个字符:碰到了制表符,那么就用6个空格代替制表符;

    继续读入6个字符:jljsdf这期间没有碰到制表符,不操作
    最后输出结果:uyiujoiuerwje 0021jk jljsdf

    举例:

    str1="12345678	9"
    v=str1.expandtabs(6)
    print(v,len(v))
    返回结果:
    12345678    9 13
    
    
    str1="1234567	89"
    v=str1.expandtabs(6)
    print(v,len(v))
    返回结果:
    1234567     89 14
    
    
    str1="username	email	password
    CCTV	ying@q.com	123
    CCTV	ying@q.com	123
    CCTV	ying@q.com	123
    "
    v=str1.expandtabs(20)
    print(v)
    返回结果:
    username            email               password
    CCTV                ying@q.com          123
    CCTV                ying@q.com          123
    CCTV                ying@q.com          123

    执行过程如下:
    设置了读入宽度为20,则:
    开始读入20个字符,username读完之后遇到制表符,则把剩余空间使用空格补全;

    继续读入20个字符,email读完之后遇到制表符,则把剩余空间使用空格补全;

    继续读入20个字符,password读完后遇到换行符,则开始换行,结束读入

    11.isalpha方法:判断字符串中是否全部都是字母,返回值是布尔值
    举例:

    str1="asdf"
    v=str1.isalpha()
    print(v)
    返回结果:
    True
    
    
    str1="as2df"
    v=str1.isalpha()
    print(v)
    返回结果:
    False
    
    
    str1="as汉字df"
    v=str1.isalpha()   #汉字也算作字母
    print(v)
    返回结果:
    True

    12.isdecimal和isdigit方法:都可以用来判断一个字符串是否全部是数字
    区别:isdigit范围更广泛,isdecimal只能判断十进制数字而且是整型,否则一律为false
    举例:

    str1="123"
    v1=str1.isdecimal()
    v2=str1.isdigit()
    print(v1,v2)
    返回结果:
    True True
    
    
    str1=""
    v1=str1.isdecimal()
    v2=str1.isdigit()
    print(v1,v2)
    返回结果:
    False False
    
    
    str1="a123"
    v1=str1.isdecimal()
    v2=str1.isdigit()
    print(v1,v2)
    返回结果:
    False False
    
    #只能判断整数,小数不行
    str1="3.1415926"
    v1=str1.isdecimal()
    v2=str1.isdigit()
    print(v1,v2)
    返回结果:
    False False
    
    #负数也不行
    str1="-31415926"
    v1=str1.isdecimal()
    v2=str1.isdigit()
    print(v1,v2)
    返回结果:
    False False
    
    #特殊类型的数值表示
    str1=""
    v1=str1.isdecimal()
    v2=str1.isdigit()
    print(v1,v2)
    返回结果:
    False True

    13.isidentifier方法:判断是否是标识符,返回布尔值
    标识符的认定标准:字母、数字、下划线,并且不能以数字开头
    只要符合上面的标准就是标识符

    举例:

    str1="def"
    v=str1.isidentifier()
    print(v)
    返回结果:
    True
    
    
    str1="1def"
    v=str1.isidentifier()
    print(v)
    返回结果:
    False
    
    
    str1="_def"
    v=str1.isidentifier()
    print(v)
    返回结果:
    True

    14.islower方法:判断字符串是否都是小写;
    isnumeric方法:判断字符串是否是数值,这个判断范围比isdigital更广泛
    举例:

    str1=""
    v1=str1.isdecimal()
    v2=str1.isdigit()
    v3=str1.isnumeric()
    print(v1,v2,v3)
    返回结果:
    False False True

    15.isprintable方法:判断字符串内容是否包含不可显示的字符,返回布尔值
    例如: 制表符、 换行符
    举例:字符串中包含不可显示的字符,返回false

    str1="ouisad	dfj"
    v=str1.isprintable()
    print(v)
    返回结果:
    False

    16.isspace方法:判断字符串是否只包含空格,只包含空格返回True,否则返回False
    举例:

    str1=" "
    v=str1.isspace()
    print(v)
    返回结果:
    True
    
    
    str1="   "
    v=str1.isspace()
    print(v)
    返回结果:
    True

    17.istitle方法及title方法:
    istitle方法:判断字符串是否符合文章标题标准,符合返回True,否则返回False
    符合文章标题的要求:字符串中每个单词开头字母均为大写
    举例:

    str1="this is a string"
    v=str1.istitle()
    print(v)
    返回结果:
    False
    
    str1="This Is A String"
    v=str1.istitle()
    print(v)
    返回结果:
    True
    
    title方法:把字符串转换为标题样式
    举例:
    str1="this is a string"
    v=str1.title()
    print(v)
    返回结果:
    This Is A String

    18.join方法:对字符串中的每个字符按照指定分隔符进行拼接

    五星重点:★★★★★

    举例:

    str1="七月的风八月的雨"
    print(str1)
    t=" "
    v=t.join(str1)
    print(v)
    返回结果:
    七月的风八月的雨
    七 月 的 风 八 月 的 雨
    
    举例:
    str1="七月的风八月的雨"
    print(str1)
    v="_".join(str1)
    print(v)
    返回结果:
    七月的风八月的雨
    七_月_的_风_八_月_的_雨

    19.ljust和rjust方法:与center类似,区别在于center把字符串放中间,ljust把字符串放左侧,rjust把字符串放右侧
    举例:

    str1="alex"
    v1=str1.ljust(20,"*")
    v2=str1.rjust(20,"*")
    print(v1)
    print(v2)
    返回结果:
    alex****************
    ****************alex

    20.lower方法和upper方法:将字符串中字符全部转换成小写和大写

    五星重点:★★★★★
    举例:

    str1="Alex"
    v1=str1.lower()
    v2=str1.upper()
    print(v1,v2)
    返回结果:
    alex ALEX

    21.lstrip方法rstrip方法和strip方法:分别去除左侧、右侧、两侧全部空格及换行、制表符等不可见字符

    五星重点:★★★★★
    注意:默认不加参数的时候是去除空格,如果指定的参数,则可以去除指定参数的内容

    举例:移除空格

    str1=" alex "
    v1=str1.lstrip()   #去除左侧空格
    v2=str1.rstrip()   #去除右侧空格
    v3=str1.strip()    ##去除所有空格
    print(v1)
    print(v2)
    print(v3)
    返回结果:
    alex 
     alex
    alex
    
    
    举例:移除换行、制表符等不可见字符
    str1="	alex	"
    v1=str1.lstrip()
    v2=str1.rstrip()
    v3=str1.strip()
    print(v1)
    print(v2)
    print(v3)
    返回结果:
    alex    
        alex
    alex
    
    举例:移除指定参数内容
    str1="alex"
    v2=str1.rstrip("x")
    print(v2)
    返回结果:
    ale
    
    str1="alex"
    v2=str1.rstrip("e")
    print(v2)
    返回结果:
    alex
    
    str1="alex"
    v2=str1.rstrip("ex")
    print(v2)
    返回结果:
    al
    
    str1="alex"
    v2=str1.rstrip("xex")
    print(v2)
    返回结果:
    al
    
    str1="alex"
    v2=str1.rstrip("lex")
    print(v2)
    返回结果:
    a
    
    str1="alex"
    v2=str1.rstrip("elx")
    print(v2)
    返回结果:
    a

    22.maketrans方法和translate方法
    这两种方法需要配合使用,先使用maketrans方法建立对应关系,然后用translate
    注意:建立对应关系时的字符串长度需要一致;
    例如:有2个字符串"aeiou"和"12345"
    现在想把这2个字符串的字符内容一一对应,即:a->1/e->2/i->3/o->4/u->5
    然后,想把一个字符串"sdaiodlffuioaouiaee"中的字符转换成对应关系的内容
    举例:

    str1="sdaiodlffuioaouiaee"
    m=str.maketrans("aeiou","12345")
    str2=str1.translate(m)
    print(str2)
    返回结果:
    sd134dlff5341453122

    23.partition方法、rpartition方法、split方法、rsplit方法、splitlines方法
    partition方法和rpartition方法一样都是把字符串分割成3份,分割结果中包含分割符
    split方法、rsplit方法也是分割字符串,但分割结果中并不包含分割符
    splitlines方法只针对字符串中包含有换行符的进行分割

    split方法五星重点方法★★★★★

    举例:

    str1="testasdsddfg"
    v=str1.partition("s")
    print(v)
    返回结果:
    ('te', 's', 'tasdsddfg')
    
    str1="testasdsddfg"
    v=str1.rpartition("s")
    print(v)
    返回结果:
    ('testasd', 's', 'ddfg')
    
    str1="testasdsddfg"
    v=str1.split("s")
    print(v)
    返回结果:
    ['te', 'ta', 'd', 'ddfg']
    
    str1="testasdsddfg"
    v=str1.split("s",1)
    print(v)
    返回结果:
    ['te', 'tasdsddfg']
    
    str1="testasdsddfg"
    v=str1.split("s",2)
    print(v)
    返回结果:
    ['te', 'ta', 'dsddfg']
    
    str1="asdfsssd
    uokkk
    lliipop"
    v=str1.splitlines()
    print(v)
    返回结果:
    ['asdfsssd', 'uokkk', 'lliipop']
    
    str1="asdfsssd
    uokkk
    lliipop"  #使用True或False用来控制是否显示换行符
    v=str1.splitlines(True)
    print(v)
    返回结果:
    ['asdfsssd
    ', 'uokkk
    ', 'lliipop']
    
    str1="asdfsssd
    uokkk
    lliipop"
    v=str1.splitlines(False)
    print(v)
    返回结果:
    ['asdfsssd', 'uokkk', 'lliipop']

    24.startswith方法
    用来判断字符串是否以指定字符开头

    举例:

    str1="backend 111"
    v=str1.startswith("b")
    print(v)
    返回结果:
    True
    
    str1="backend 111"
    v=str1.startswith("a")
    print(v)
    返回结果:
    False

    25.swapcase方法
    大小写转换,把字符串中小写字符改成大写,把大写字符改成小写

    举例:

    str1="aLex"
    v=str1.swapcase()
    print(v)
    返回结果:
    AlEX

    26.replace方法:字符串内容替换

    五星重点:★★★★★
    格式:
    replace(<被替换内容>,<新内容>[,替换次数])
    举例:

    str1="alexalexalex"
    v=str1.replace("ex","aaa")
    print(v)
    返回结果:
    alaaaalaaaalaaa
    
    str1="alexalexalex"
    v=str1.replace("ex","aaa",1)  #只替换1次
    print(v)
    返回结果:
    alaaaalexalex
    
    str1="alexalexalex"
    v=str1.replace("ex","aaa",2)  #只替换2次
    print(v)
    返回结果:
    alaaaalaaaalex

    下面是字符串的黑科技方法

    五星重点★★★★★

    1.字符串的切片:使用[位置1[:位置2]]表示,位置参数是数字,称为下标,从0开始
    作用:
    如果只给定一个位置参数,则提取字符串中的某一个子字符
    如果给定多个位置参数,则提取字符串中从位置1的字符开始(包含位置1的字符),直到位置2(不包含位置2的字符)
    举例:

    str1="alex"
    v=str1[0]
    print(v)
    返回结果:
    a
    
    str1="alex"
    v=str1[2]
    print(v)
    返回结果:
    e
    
    str1="alex"
    v=str1[0:1]   #从0开始,不包含1位置的字符
    print(v)
    返回结果:
    a
    
    str1="alex"
    v=str1[0:2]   #从0开始,不包含2位置的字符
    print(v)
    返回结果:
    al
    
    str1="alex"
    v=str1[0:-1]   #从0开始,直到最后,但不包含最后位置的字符
    print(v)
    返回结果:
    ale

    str1="alex"
    v=str1[-2] #倒数第2个
    print(v)
    返回结果:
    e

    
    

    str1="alex"
    v=str1[2:3] #从第2个开始到第3个,但不包含第3个,所以返回结果是e
    print(v)
    返回结果:
    e

    
    

    str1="alex"
    v=str1[2:4] #从第2个开始,直到最后,取得最后2个字符
    print(v)
    返回结果:
    ex

    
    

    str1="alex"
    k=len(str1)
    v=str1[k-2:k] #取得字符串中最后2个字符,通用方法
    print(v)
    返回结果:
    ex

     

    2.字符串的len方法:返回字符串中由多少个字符组成
    注意:在python3版本中如果字符串中的中文,则一个中文按1个计算;
    在python2.7版本中,如果按照utf8编码的话,一个汉字由3个字节组成,则3个汉字,此方法返回结果是9

    举例:

    str1="我爱你"
    v=len(str1)
    print(v)
    返回结果:
    3

    3.for循环方法:循环遍历字符串中的某一个字符
    格式:
    for 变量名 in 字符串:
    代码块

    举例:

    str1="我爱你"
    for love in str1:
      print(love)

    4.range方法:创建连续的数字,可以通过设置步长来指定不连续,但并不立即生成,当使用for循环的时候才生成

    格式:
    range(<数值1>[,数值2][,步长])

    例如:range(100)表示创建一个从0..99的连续数值

    举例:

    v=range(100)
    print(v)
    返回结果:   #在python3版本中,是如下的返回结果,如果在python2.7中,则会立即生成从0..99的连续数字
    range(0,100)
    
    如果要生成这个列表的话,需要使用for
    举例:
    v=range(100)
    for item in v:
        print(item)
    
    通过设置步长,来生成不连续的数字
    举例:
    v=range(0,100,5)
    for item in v:
        print(item)
    返回结果:
    0 5 10 15...

    如果要生成的是倒序:
    range(100,0,-1)


    for i in range(100,0,-1):
      print(i) #打印输出

     
  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/Kumanon/p/10366767.html
Copyright © 2011-2022 走看看