思维导图总括

str字符串处理 - 图1

1. 创建字符串

str字符串处理 - 图2

1.1 字符串之间拼接

直接将两个字符串紧挨着写在一起

  1. strname = "str1" "str2"

1.2 字符串变量拼接

使用变量,就得借助+运算符来拼接

  1. strname = str1 + str2

1.3 字符串与数字的拼接

Python 不允许直接拼接数字和字符串,所以我们必须借助str(),repr()先将数字转换成字符串。
使用格式:**str(obj)、repr(obj)**

  1. name = "C语言中文网"
  2. age = 8
  3. course = 30
  4. info = name + "已经" + str(age) + "岁了,共发布了" + repr(course) + "套教程。"
  5. print(info)
  6. ————————运行结果——————
  7. C语言中文网已经8岁了,共发布了30套教程。

**str()、repr()**的区别
**str() 和 repr()** 函数虽然都可以将数字转换成字符串,但它们之间是有区别的:

  • **str() **用于将数据转换成适合人类阅读的字符串形式。
  • **repr() **用于将数据转换成适合解释器阅读的字符串形式(Python 表达式的形式),适合在开发和调试阶段使用;如果没有等价的语法,则会发生

    **SyntaxError** 异常。 ```python s = “http://c.biancheng.net/shell/“ s_str = str(s) s_repr = repr(s) print( type(s_str) ) print (s_str) print( type(s_repr) ) print (s_repr)

————————运行结果——————

http://c.biancheng.net/shell/

http://c.biancheng.net/shell/

  1. <a name="BirnB"></a>
  2. ## 2. 获取字符串切片
  3. <a name="Oukbg"></a>
  4. ### 2.1 获取单个字符
  5. `**strname[index]**`<br />strname 表示字符串名字,index 表示索引值。
  6. <a name="DWQfh"></a>
  7. ### 2.2 获取多个字符
  8. `**strname[start : end : step]---->**`从start提取至end-1,每隔step个字符提取一个。<br />strname[ : :-1]——代表从右往左依次取值。
  9. <a name="EOaQp"></a>
  10. ## 3. 分割字符串
  11. split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。<br />`**str.split(sep,maxsplit)**`
  12. - str:表示要进行分割的字符串;
  13. - sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。
  14. - maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。
  15. ```python
  16. str="ni >>> hao"
  17. a=str.split(">>>")
  18. b=str.split()
  19. print(a)
  20. print(b)
  21. ——————运行结果——————
  22. ["ni","hao"]
  23. ["ni",">>>","hao"]

4. 合并字符串

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

  • newstr:表示合并后生成的新字符串;
  • str:用于指定合并时的分隔符;
  • iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。 ```python dir=(“usr”,”bin”,”net”) “/“.join(dir)

————————运行结果————————————

“usr/bin/net”

  1. <a name="ei0CR"></a>
  2. ## 5. 统计字符串出现的次数
  3. count 方法用于检索指定字符串在另一字符串中出现的次数,如果检索的字符串不存在,则返回 0,否则返回出现的次数。<br />`**str.count(sub[,start[,end]])**`
  4. - str:表示原字符串;
  5. - sub:表示要检索的字符串;
  6. - start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索;
  7. - end:指定检索的终止位置,如果不指定,则表示一直检索到结尾。
  8. ```python
  9. str="www.baidu.com"
  10. a = str.count('.',1)
  11. b = str.count('.',2)
  12. c = str.count('.',2,-3)
  13. d = str.count('.',2,-4)
  14. print(a)
  15. print(b)
  16. print(c)
  17. print(d)
  18. ——————————运行结果————————
  19. 2
  20. 1
  21. 2
  22. 1

6. 检测字符串中是否包含子串

6.1 find() 与rfind()方法

用于从字符串左边开始检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1。
**str.find(sub[,start[,end]])**

  1. str:表示原字符串;
  2. sub:表示要检索的目标字符串;
  3. start:表示开始检索的起始位置。如果不指定,则默认从头开始检索;
  4. end:表示结束检索的结束位置。如果不指定,则默认一直检索到结尾。
    1. >>>str="www.baidu.com"
    2. >>>str.find('c')
    3. 10
    4. >>> str
    rfind()方法用于从字符串右边开始检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引(索引从0开始),反之,则返回 -1。 ```python

    str=”www.baidu.com” str.rfind(‘c’) 10

  1. <a name="BI4NL"></a>
  2. ### 6.2 index() 与rindex()方法
  3. 同 find() 方法类似,index() 方法也可以用于检索是否包含指定的字符串,不同之处在于,当指定的字符串不存在时,index() 方法会抛出异常。<br />`**str.index(sub[,start[,end]])**`<br />同 find() 和 rfind() 一样,字符串变量还具有 rindex() 方法,其作用和 index() 方法类似,不同之处在于它是从右边开始检索。
  4. <a name="jgdvF"></a>
  5. ## 7. 字符串对齐方法
  6. <a name="imYyr"></a>
  7. ### 7.1 ljust()方法
  8. ljust() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的。<br />`** S.ljust(width[, fillchar])**`
  9. - S:表示要进行填充的字符串;
  10. - width:表示包括 S 本身长度在内,字符串要占的总长度;
  11. - fillchar:作为可选参数,用来指定填充字符串时所用的字符,默认情况使用空格。
  12. <a name="nHLk5"></a>
  13. ### 7.2 rjust()方法
  14. rjust() 和 ljust() 方法类似,唯一的不同在于,rjust() 方法是向字符串的左侧填充指定字符,从而达到右对齐文本的目的。<br />`**S.rjust(width[, fillchar])**`
  15. <a name="oeWVn"></a>
  16. ### 7.3 center()方法
  17. center() 字符串方法与 ljust() 和 rjust() 的用法类似,但它让文本居中,而不是左对齐或右对齐。<br />`**S.center(width[, fillchar])**`
  18. <a name="csckH"></a>
  19. ## 8. `startswith() `和`endswith() `方法
  20. `**startswith() **`方法用于检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。<br />此方法的语法格式如下:`**str.startswith(sub[,start[,end]])**`<br />此格式中各个参数的具体含义如下:
  21. - str:表示原字符串;
  22. - sub:要检索的子串;**字符串或者字符串元组,不能是列表或者字典**
  23. - start:指定检索开始的起始位置索引,如果不指定,则默认从头开始检索;
  24. - end:指定检索的结束位置索引,如果不指定,则默认一直检索在结束。
  25. `**endswith() **`方法用于检索字符串是否以指定字符串结尾,如果是则返回 True;反之则返回 False。<br />该方法的语法格式如下:`**str.endswith(sub[,start[,end]])**`<br />此格式中各参数的含义如下:
  26. - str:表示原字符串;
  27. - sub:表示要检索的字符串;**字符串或者字符串元组,不能是列表或者字典**
  28. - start:指定检索开始时的起始位置索引(字符串第一个字符对应的索引值为 0),如果不指定,默认从头开始检索。
  29. - end:指定检索的结束位置索引,如果不指定,默认一直检索到结束。
  30. ```python
  31. >>> a='http://www.w3cschool.cn/vip'
  32. >>> a.startswith (('http','ftp'))
  33. True
  34. >>> a='http://www.w3cschool.cn/vip'
  35. >>> a.startswith ('http')
  36. True

9. 字符串大小写转换

为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。这3 个方法都仅限于将转换后的新字符串返回,而不会修改原字符串。

9.1 title()

用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。如果字符串中没有需要被转换的字符,此方法会将字符串原封不动地返回。
**str.title()**

9.2 lower()

lower() 方法用于将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串。如果字符串中原本就都是小写字母,则该方法会返回原字符串。

9.3 upper()

用于将字符串中的所有小写字母转换为大写字母,转换完成后,该方法会返回新得到的字符串。

10. 去除字符串中的空格和特殊字符

可以使用Python中提供的strip()函数去除字符串左右两边的空格和特殊字符,也可以使用lstrip()函数去除字符串左边的空格和特殊字符,或使用rstrip()函数去除字符串中右边的空格和特殊字符。

10.1 strip()

strip()方法用于去掉字符串左、右两侧的空格和特殊字符,
**str.strip([chars])**

  • str为要去除空格的字符串;chars为可选参数,用于指定要去除的字符,可以指定多个。
  • 如果不指定chars参数,默认将去除空格、制表符\t、回车符\r、换行符\n等。

    10.2 lstrip()方法

    lstrip()方法用于去掉字符串左侧的空格和特殊字符,

    10.3 rstrip()方法

    rstrip()方法用于去掉字符串右侧的空格和特殊字符,

    11. 格式化字符串

    格式化字符串的意思是先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。

    11.1 使用%操作符

    1. %操作符用法:
    2. str = "Myname is %s ,My age is %s" %(name,age)

    11.2 使用字符串对象的format()方法

    字符串对象提供了format()方法用于进行字符串格式化
    **str.format(args)**

  • str用于指定字符串的显示样式(即模板);

  • args用于指定要转换的项,如果有多项,则用逗号进行分隔。 ```python format用法:
    1. str = “Myname is {name} ,My age is {age}”.format(name=”小勇”,age=18)
    2. str = “Myname is {} ,My age is {}”.format() # 类似于%s用法,传入的值会按照位置与{ }一一对应
    3. 把format传入的多个值当做一个列表,然后用{索引}取值

      str = “Myname is {1} ,My age is {0}”.format(“小勇”,18) # str = “Myname is 18 ,My age is 小勇”
  1. <a name="le3M6"></a>
  2. ### 11.3 f-{}方式格式化
  3. ```java
  4. f-{}用法:
  5. name = "Tom"
  6. print(f"我的名字是{name}")