Python 3.6从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

4.4 内置的字符串方法

在Python中,字符串的方法有很多,主要是因为字符串中string模块中继承了很多方法。本节将对几种常用的方法进行讲解。

4.4.1 capitalize()方法

capitalize()方法将字符串的第一个字符转化为大写,其他字符转化为小写。

capitalize()方法的语法格式如下:

    str.capitalize()

其中,str为需要转化的字符串。下面通过示例来学习。

    >>>str = "i can because I think I can"
    >>>tt=str.capitalize()+":我行,因为我相信我行!"
    >>>print (tt)

运行结果如图4-24所示。

图4-24 运行结果

特别需要注意的是,如果字符串的首字符不是字母,那么该字符串中的第一个字符不会转换为大写,而转换为小写。

例如:

    >>>str="123 I can because I think I can "
    >>>str.capitalize()
    >>>str="@ I can because I think I can "
    >>>str.capitalize()

运行结果如图4-25所示。

图4-25 运行结果

4.4.2 count()方法

count()方法用于统计字符串里某个字符出现的次数,可选参数为在字符串搜索的开始与结束位置。

count()方法的语法格式如下:

    str.count(sub, start= 0,end=len(string))

其中,sub为搜索的子字符串;start为字符串开始搜索的位置,默认为第一个字符,第一个字符索引值为0;end为字符串中结束搜索的位置,默认为字符串的最后一个位置。

例如:

    >>>str="The best preparation for tomorrow is doing your best today"
    >>>s='b'
    >>>print ("字符b出现的次数为: ", str.count(s))
    >>>s='best '
    >>>print ("best出现的次数为:", str.count(s,0,6))
    >>>print ("best出现的次数为:", str.count(s,0,40))
    >>>print ("best出现的次数为:", str.count(s,0,80))

运行结果如图4-26所示。

图4-26 运行结果

4.4.3 find()方法

find()方法检测字符串中是否包含子字符串。如果包含子字符串,就返回开始的索引值;否则就返回-1。

find()方法的语法格式如下:

    str.find(str, beg=0, end=len(string)

其中,str为指定检索的字符串;beg为开始索引,默认为0;end为结束索引,默认为字符串的长度。例如:

    >>> str1 = "青海长云暗雪山,孤城遥望玉门关。"
    >>> str2 = "玉门"
    >>> print (str1.find(str2))
    >>> print (str1.find(str2,10))
    >>> print (str1.find(str2,13,15))

运行结果如图4-27所示。

图4-27 运行结果

4.4.4 index()方法

index()方法检测字符串中是否包含子字符串。如果包含子字符串,就返回开始的索引值,否则就会报一个异常。

index()方法的语法格式如下:

    str.index(str, beg=0, end=len(string))

其中,str为指定检索的字符串;beg为开始索引,默认为0;end为结束索引,默认为字符串的长度。例如:

    >>>str1 = "青海长云暗雪山,孤城遥望玉门关。"
    >>>str2 = "玉门"
    >>>print (str1.index(str2))
    >>>print (str1.index (str2,10))
    >>>print (str1.index(str2,13,15))

运行结果如图4-28所示。

图4-28 运行结果

可见,该方法与find()方法一样,只是如果str不在string中,就会报一个异常。

4.4.5 isalnum()方法

isalnum()方法检测字符串是否由字母和数字组成。

isalnum()方法语法格式如下:

    str.isalnum()

如果字符串中至少有一个字符并且所有字符都是字母或数字,就返回True;否则就返回False。例如:

    >>>str1 = "Whateverisworthdoingisworthdoingwell"   #字符串没有空格
    >>>print (str1.isalnum())
    >>>str1="Whatever is worth doing is worth doing well"   #这里添加了空格
    >>>print (str1.isalnum())

运行结果如图4-29所示。

图4-29 运行结果

4.4.6 join()方法

join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

join()方法的语法格式如下:

    str.join(sequence)

其中,sequence为要连接的元素序列。

例如:

    >>>s1 =""
    >>>s2 ="*"
    >>>s3 ="#"
    #字符串序列
    >>>e1=("黄", "沙", "百", "战", "穿", "金", "甲")
    >>>e2=("不", "破", "楼", "兰", "终", "不", "还")
    >>> print (s1.join( e1 ))
    >>> print (s2.join( e2 ))
    >>> print (s3.join( e2 ))

运行结果如图4-30所示。

图4-30 运行结果

注意:被连接的元素必须是字符串,如果是其他的数据类型,运行时就会报错。

4.4.7 isalpha()方法

isalpha()方法检测字符串是否只由字母或汉字组成。如果字符串至少有一个字符并且所有字符都是字母或汉字,就返回True;否则就返回False。

isalpha()方法的语法格式如下:

    str.isalpha()

例如:

    >>>s1 = "Believe相信"
    >>>print (s1.isalpha())
    >>>s1 = "大漠风尘日色昏,红旗半卷出辕门。"
    >>>print (s1.isalpha())

运行结果如图4-31所示。

图4-31 运行结果

4.4.8 isdigit()方法

isdigit()方法检测字符串是否只由数字组成。如果字符串中只包含数字,就返回True;否则就返回False。

isdigit()方法的语法格式如下:

    str.isdigit()

例如:

    >>>s1 = "123456789"
    >>>print (s1.isdigit())
    >>>s1 = "Believe123456789"
    >>>print (s1.isdigit())

运行结果如图4-32所示。

图4-32 运行结果

4.4.9 low ()方法

low ()方法将字符串中的所有大写字符转化为小写字符。

low()方法的语法格式如下:

    str.lower()

其中,str为指定需要转化的字符串,该方法没有参数。

例如:

    >>>s1 ="HAPPINESS"
    >>>print('使用low()方法后的效果:',s1.lower())
    >>>s2 ="Happiness"
    >>>print('使用low()方法后的效果:',s2.lower())

运行结果如图4-33所示。从结果可以看出,字符串中的大写字母全部转化为小写字母了。

图4-33 运行结果

如果想实现“不区分大小写”功能,就可以使用lower()方法。例如,在一个字符串中查找某个子字符串并忽略大小写:

    >>>s1 = "HAPPINESS"
    >>>s2 = "Ss"
    >>>s1.find(s2)                 #都不转化为小写,找不到匹配的字符串
    >>>s1.lower().find(s2)           #被查找字符串转化为小写,找不到匹配的字符串
    >>>s1.lower().find(s2.lower())     #全部转化为小写,找不到匹配的字符串

运行结果如图4-34所示。从结果可以看出,字符串中的大写字母全部转化为小写字母后,即可匹配到对应的子字符串。

图4-34 运行结果

4.4.10 max()方法

max()方法返回字符串中的最大值。

max()方法的语法格式如下:

    str.max()

其中,str为指定需要查找的字符串,该方法没有参数。

例如:

    >>>s1 ="abcdefgh"
    >>>max(s1)
    >>>s2 ="abcdefghABCDEFGH "
    >>>max(s2)

运行结果如图4-35所示。从结果可以看出,若出现相同字母的大小写,则小写字母整体大于大写字母。

图4-35 运行结果

4.4.11 min()方法

min()方法返回字符串中的最小值。

min()方法的语法格式如下:

    str.min()

其中,str为指定需要查找的字符串,该方法没有参数。

例如:

    >>>s1 ="abcdefgh"
    >>>min(s1)
    >>>s2 ="abcdefghABCDEFGH "
    >>>min(s2)

运行结果如图4-36所示。从结果可以看出,若出现相同字母的大小写,则大写字母整体小于小写字母。

图4-36 运行结果

4.4.12 replace()方法

replace()方法用于把字符串中的旧字符串替换为新字符串。

replace()方法的语法格式如下:

    str.replace(old, new[, max])

其中,old为将被替换的子字符串;new为新字符串,用于替换old子字符串;max为可选参数,表示替换不超过max次。

例如:

    >>>s1="最近采购货物为冰箱"
    >>>print(s1.replace("冰箱", "洗衣机"))
    >>>s1="一片两片三四片 五片六片七八片 九片十片片片飞 飞入芦花皆不见"
    >>>print(s1.replace("片","页",1))
    >>>print(s1.replace("片","页",2))
    >>>print(s1.replace("片","页",10))
    >>>print(s1.replace("片","页"))

运行结果如图4-37所示。从结果可以看出,若制定第三个参数,则替换从左到右进行,替换次数不能超过指定的次数;若不指定第三个参数,则所有匹配的字符都将被替换。

图4-37 运行结果

4.4.13 swapcase ()方法

swapcase()方法用于对字符串的大小写字母进行转换,即将字符串中小写字母转换为大写、大写字母转为小写。

swapcase()方法的语法格式如下:

    str.swapcase ()

其中,str为指定需要查找的字符串,该方法没有参数。返回结果为大小写字母转换后生成的新字符串。

例如:

    >>>s1 ="Happiness is a way station between too much and too little "
    >>>print ('原始的字符串:',s1)
    >>>print('转换后的字符串:',s1.swapcase())

运行结果如图4-38所示。从结果可以看出,调用swapcase()方法后,字符串中的大小写将会进行相互转换。

图4-38 运行结果

4.4.14 title ()方法

title()方法返回“标题化”的字符串,即所有单词都以大写开始,其余字母均为小写。

title ()方法的语法格式如下:

    str.title()

其中,str为指定需要查找的字符串,该方法没有参数。返回结果为大小写字母转换后生成的新字符串。

例如:

    >>>s1 ="Happiness is a way station between too much and too little "
    >>>print ('原始的字符串:',s1)
    >>>print('转换后的字符串:',s1.title())

运行结果如图4-39所示。从结果可以看出,调用title()方法后,字符串中所有单词都以大写开始,其余字母均为小写。

图4-39 运行结果