zoukankan      html  css  js  c++  java
  • 常用字符串相关方法

    前面我们见过书写字符串的一种特殊方式,即直接将两个字符串紧挨着写在一起,这样的话 Python 就会自动拼接它们,比如说:

    s1='Hello,''World'
    print(s1) #Hello,World

    还有一种方式是使用 "+"的方式,比较简单

    s1='Hello,'+ 'World'
    print(s1)
    #Hello,World

    还有使用字符串拼接数字,因为Python不允许直接拼接,所以要将数字转换成字符串

    s1 = "这是数字: "
    p = 99.8
    #字符串直接拼接数值,程序报错
    print(s1 + p)
    #使用str()将数值转换成字符串
    print(s1 + str(p))
    #使用repr()将数值转换成字符串
    print(s1 + repr(p))

    str() 和 repr() 函数都可以将数字转换成字符串,其中 str 是 Python 内置的类型(和 int、float 一样),而 repr() 则只是一个函数。此外,repr 还有一个功能,它会以 Python 表达式的形式来表示值

    st = "I will play my fife"
    print (st)
    print(repr(st))
    I will play my fife
    'I will play my fife'

    通过上面的输出结果可以看出,如果直接使用 print() 函数输出字符串,将只能看到字符串的内容,没有引号;但如果先使用 repr() 函数对字符串进行处理,然后再使用 print() 执行输出,将可以看到带引号的字符串,这就是 Python 字符串的表达式形式

    截取字符串字符串切片

    字符串本质上就是由多个字符组成的,Python 允许通过索引来操作字符,比如获取指定索引处的字符,获取指定字符在字符串中的位置等。

    string[index]

    这里的 string 表示要截取的字符串,index 表示索引值。Python 规定,字符串中第一个字符的索引为 0、第二个字符的索引为 1,后面各字符依此类推。此外,Python 也允许从后面开始计算索引,最后一个字符的索引为 -1,倒数第二个字符的索引为 -2。

    str2=' www.iqi.com 123 34'
    
    print(str2[3])#w
    print(str2[-2])#3

    除可获取单个字符之外,Python 也可以在方括号中使用范围来获取字符串的中间“一段”(被称为子串),其基本语法格式为:

    string[start : end : step]

    此格式中,各参数的含义如下:

           string:要截取的字符串;

           start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;

           end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;

           step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。

    str2=' www.iqi.com 123 34'
    
    print(str2[3:9:2])#wii
    print(str2[-6::2])#133
    print(str2[:-3])# www.iqi.com 123
    # 获取s中从索引5处到结束的子串
    print(s[5: ]) 
    # 获取s中从倒数第6个字符到结束的子串
    print(s[-6: ]) 
    # 获取s中从开始到索引5处的子串
    print(s[: 5]) 
    # 获取s中从开始到倒数第6个字符的子串
    print(s[: -6])

    此外,Python 字符串还支持用 in 运算符判断是否包含某个子串。例如如下代码:

    print('iqi' in str2) #True
    print('iqi12' in str2) #False

    还可使用全局内置的 min() 和 max() 函数获取字符串中最小字符和最大字符。例如如下代码:

    print(min(str2)) #最小值空格
    print(max(str2))#最大值 w

    分割字符串 split( )方法

    split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下:

    str.split(sep,maxsplit)

    此方法中各部分参数的含义分别是:

         str:表示要进行分割的字符串;

         sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“ ”、制表符“ ”等。

         maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。

    在 split 方法中,如果不指定 sep 参数,那么也不能指定 maxsplit 参数。

    str2=' www.iqi.com.123 34 @163'
    
    print(str2.split())#采用默认分隔符空格分割 ['www.iqi.com.123', '34', '@163']
    print(str2.split(' ',2))#采用默认分隔符分割两次 ['', 'www.iqi.com.123', '34 @163']
    print(str2.split('.'))#采用.分隔符 [' www', 'iqi', 'com', '123 34 @163']
    print(str2.split('.',2))#采用.分隔符分割两次 [' www', 'iqi', 'com.123 34 @163']

     join()方法:合并字符串

    join() 方法也是非常重要的字符串方法,它是 split() 方法的逆方法,用来将列表(或元组)中包含的多个字符串连接成一个字符串

    使用 join() 方法合并字符串时,它会将列表(或元组)中多个字符串采用固定的分隔符连接在一起。

    newstr = str.join(iterable)

    此方法中各参数的含义如下:

    newstr:表示合并后生成的新字符串;

    str:用于指定合并时的分隔符;

    iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供

    newstr='.'.join(("1","2","3"))
    print(newstr)
    print(type(newstr))

    1.2.3
    <class 'str'>

    count()方法:统计字符串出现的次数

    count 方法用于检索指定字符串在另一字符串中出现的次数,如果检索的字符串不存在,则返回 0,否则返回出现的次数。

    count 方法的语法格式如下:

    str.count(sub[,start[,end]])

    此方法中,各参数的具体含义如下:

          str:表示原字符串;

          sub:表示要检索的字符串;

          start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索;

          end:指定检索的终止位置,如果不指定,则表示一直检索到结尾。

    str2=' www.iqi.com.123 34 @163'
    
    print(str2.count(' '))#打印空格数量 3

    find()方法:检测字符串中是否包含某子串

    find() 方法用于检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1。

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

    str.find(sub[,start[,end]])

    此格式中各参数的含义如下:

         str:表示原字符串;

         sub:表示要检索的目标字符串;

         start:表示开始检索的起始位置。如果不指定,则默认从头开始检索;

         end:表示结束检索的结束位置。如果不指定,则默认一直检索到结尾。

    str2=' www.iqi.com.123 34 @163'
    
    print(str2.find('.'))#索引为4
    print(str2.find(' '))#索引为 0
    print(str2.find('iqi',2,-6))#索引为 5
    print(str2.find(' ',3,30))#索引为 16
    print(str2.find('54')) #没找到返回-1

    注意,Python还提供了 rfind() 方法,与 find() 方法最大的不同在于,rfind() 是从字符串右边开始检索。例如:

    str2=' www.iqi.com.123 34 @163'
    
    print(str2.rfind('.'))#索引为12

    index()方法:检测字符串中是否包含某子串

    同 find() 方法类似,index() 方法也可以用于检索是否包含指定的字符串,不同之处在于,当指定的字符串不存在时,index() 方法会抛出异常。

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

    str.index(sub[,start[,end]])

    此格式中各参数的含义分别是:

          str:表示原字符串;

          sub:表示要检索的子字符串;

          start:表示检索开始的起始位置,如果不指定,默认从头开始检索;

          end:表示检索的结束位置,如果不指定,默认一直检索到结尾。

    str2=' www.iqi.com.123 34 @163'
    
    print(str2.index('.'))# 4
    print(str2.index('.',5,-6))# 8
    print(str2.index('.',5,20))# 8

    同 find() 和 rfind() 一样,字符串变量还具有 rindex() 方法,其作用和 index() 方法类似,不同之处在于它是从右边开始检索,例如:

    str2=' www.iqi.com.123 34 @163'
    
    print(str2.rindex('.'))# 12

    去除字符串中空格(删除指定字符)的3种方法

    用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。

    这里的特殊字符,指的是制表符( )、回车符( )、换行符( )等

    Python中,字符串变量提供了 3 种方法来删除字符串中多余的空格和特殊字符,它们分别是:

         strip():删除字符串前后(左右两侧)的空格或特殊字符。

         lstrip():删除字符串前面(左边)的空格或特殊字符。

         rstrip():删除字符串后面(右边)的空格或特殊字符。


    注意,Python 的 str 是不可变的(不可变的意思是指,字符串一旦形成,它所包含的字符序列就不能发生任何改变),因此这三个方法只是返回字符串前面或后面空白被删除之后的副本,并不会改变字符串本身。

    Python strip()方法

    strip() 方法用于删除字符串左右两个的空格和特殊字符,该方法的语法格式为:

    str.strip([chars])

    其中,str 表示原字符串,[chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符

    str2=" www.iqi.com.123 123@
    	"
    
    print(str2.strip("
    "))  # " www.iqi.com.123 123@"
    print(str2.lstrip()) # "www.iqi.com.123 123@"
    print(str2.rstrip()) # " www.iqi.com.123 123@"
  • 相关阅读:
    BZOJ3669
    HDU3726
    BZOJ3282
    BZOJ2843
    Link/cut Tree
    Codeforces396A
    LOJ6277~6285 数列分块入门
    Codeforces446C
    Codeforces475D
    Codeforces103D
  • 原文地址:https://www.cnblogs.com/jzxs/p/11437767.html
Copyright © 2011-2022 走看看