欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

(python)数据结构---字符串

程序员文章站 2022-03-16 23:25:37
一、概述 由一个个字符组成的有序序列。 使用单引号、双引号、三引号引住的字符序列。 不可变、线性的数据结构。 二、字符串的相关操作 1、元素访问 下标 字符串是线性的数据结构,可以使用索引去访问元素。 索引不可超界,否则抛异常IndexError。 字符串是可迭代的对象。 hello 2、“stri ......

一、概述

  • 由一个个字符组成的有序序列。
  • 使用单引号、双引号、三引号引住的字符序列。
  • 不可变、线性的数据结构。

二、字符串的相关操作

1、元素访问----下标

  • 字符串是线性的数据结构,可以使用索引去访问元素。
  • 索引不可超界,否则抛异常indexerror。
  • 字符串是可迭代的对象。
1 string = "hello"
2 print(string[1])

运行结果如下:
e
1 string = "hello"
2 for s in string:
3     print(s)

运行结果如下:

h
e
l
l
o

2、“string”.join(iterable)

  • 使用string作为分隔符,将可迭代对象连接起来。
  • 可迭代对象本身内的元素必须是字符串类型。
  • 返回一个新的字符串,原字符串不变。
1 lst = ['1', '3', 'a']
2 string = "-".join(lst)
3 print(string)

运行结果如下:
1-3-a

3、+

  • 将两个字符串连接在一起。
  • 返回一个新的字符串。
1 string1 = 'hello'
2 string2 = 'python'
3 string3 = string1 + string2
4 print(string3)

运行结果如下:
hellopython

4、string.split(sep=none, maxsplit=-1)

  • sep:指定分隔符,缺省状态下以空白字符作为分割符。
  • maxsplit:指定最大分割数,缺省状态下遍历整个字符串。
  • 返回一个新的字符串列表。
  • 从左向右分割。
  • 还有相反的方法rsplit,用法与其一致,只不过这个方法是从右向左开始分割。
1 string = "i'am a super student"
2 newstr = string.split('s', 1)
3 print(newstr)

运行结果如下:
["i'am a ", 'uper student']
1 string = "i'am a super student"
2 newstr = string.rsplit('s', 1)
3 print(newstr)

运行结果如下:
["i'am a super ", 'tudent']

5、string.splitlines([keepends=false])

  • keepends:是否保留行分隔符(行分隔符有:\n   \r\n   \r等)。
  • 按照行进行分割。
  • 返回一个新的字符串列表。
1 string = "ab c\n\nde fg\rkl\r\nz"
2 newstr = string.splitlines()
3 print(newstr)

运行结果如下:
['ab c', '', 'de fg', 'kl', 'z']
1 string = "ab c\n\nde fg\rkl\r\nz"
2 newstr = string.splitlines(true)
3 print(newstr)

运行结果如下:
['ab c\n', '\n', 'de fg\r', 'kl\r\n', 'z']

6、string.partition(sep)

  • 遇到指定的分隔符sep就将字符串分割为三部分(头、分隔符、尾),如果没有找到分隔符,就返回头、2个空元素三部分个部分。
  • 返回一个新的元组。
  • 从左向右开始分割。
  • 还有一个相反的方法rpartition,用法和该方法一致,rpartition是从右向左开始分割的。
1 string = "i'm a super student"
2 newtuple = string.partition('s')
3 print(newtuple)

运行结果如下:
("i'm a ", 's', 'uper student')

7、string.upper()

  • 将字符串中的字母全部大写。
  • 返回一个新的字符串。
  • 与其相反的还有一个方法string.lower(),将字符串中的字母全部小写。
1 string = "i'm a super student"
2 newstr = string.upper()
3 print(newstr)

运行结果如下:
i'm a super student

8、string.swapcase()

  • 将字符串中的字母进行大小写互换
  • 返回一个新的字符串。
1 string = "a b"
2 newstr = string.swapcase()
3 print(newstr)

运行结果如下:
a b

9、string.title()

  • 将字符串中的每个单词的是首字母大写。
  • 返回一个新的字符串。
1 string = "hello python"
2 newstr = string.title()
3 print(newstr)

运行结果如下:
hello python

10、string.capitalize()

  • 将首个单词的字母大写。
  • 返回一个新的字符串。
1 string = "hello python"
2 newstr = string.capitalize()
3 print(newstr)

运行结果如下:
hello python

11、string.center(width[, fillchar])

  • width:按照指定的宽度将字符串居中。
  • fillchar:要填充的字符。
  • 返回一个新的字符串。
1 string = "abc"
2 newstr = string.center(10, "*")
3 print(newstr)

运行结果如下:
***abc****

12、string.zfill(width)

  • 居右对齐,左边用0填充。
  • 返回一个新的字符串。
1 string = "abc"
2 newstr = string.zfill(10)
3 print(newstr)

运行结果如下:
0000000abc

13、string.ljust(width[, fillchar])

  • 居左对齐,其余空白位置根据指定的字符进行填充。
  • 返回一个新的字符串。
  • 还有一个与其相反的方法string.rjust(width[, fillchar]),居右对其,其余位置按照指定的字符进行填充。
1 string = "abc"
2 newstr = string.ljust(10, "*")
3 print(newstr)

运行结果如下:
abc*******
1 string = "abc"
2 newstr = string.rjust(10, "*")
3 print(newstr)

运行结果如下:
*******abc

14、string.replace(old, new[, count])

  • old:要被替换的字符。
  • new:要替换的新字符。
  • count:替换的次数,不指定就是全部替换。
  • 从字符串中找到匹配的字符old,替换为新的字符new,返回新的字符串。
1 string = "aabbcc"
2 newstr = string.replace('b', '*' )
3 print(newstr)

运行结果如下:
aa**cc

15、string.strip([chars])

  • 从字符串两端去除指定字符集chars中的所有字符。
  • 如果chars没有指定,则去除两端的空白字符。
  • 还有两个与其相对应的方法lstrip,它是从左开始去除指定字符集中的字符;rstrip,它是从右开始去除指定字符集中的字符。
1 string = "\r \n \t hello python \n \t"
2 newstr = string.strip()
3 print(newstr)

运行结果如下:
hello python
1 string = "i am very very very sorry"
2 newstr = string.strip('iay')
3 print(newstr)

运行结果如下:
 am very very very sorr

16、string.find(sub[, start[, end]])

  • 在指定的区间[start, end],查找子串sub,如果找到就返回对应的索引,没有找到就返回-1.
  • 与其相反的方法是rfind,用于与其一直,只不过rfind是从右往左查找。
  • 还有一个与其相似的方法是string.index(sub[, start[, end]]),不同的地方是如果没有找到它会抛出异常valueerror。
1 string = "i am very very very sorry"
2 newstr = string.find('very')
3 print(newstr)

运行结果如下:
5

17、string.count(sub[, start[, end]])

  • 在指定的区间[start, end],统计子串sub出现的次数。
1 string = "i am very very very sorry"
2 newstr = string.count('very')
3 print(newstr)

运行结果如下:
3

18、startswith(prefix[, start[, end]])

  • 在指定的区间[start, end],判断字符串是否以prefix开头
  • 如果是返回trun,反之返回false
  • 与之相反的还有一个方法string.endswith(suffix[, start[, end]]),它是用来判断字符串是否以suffix结尾的。
1 string = "i am very very very sorry"
2 newstr = string.startswith('i')
3 print(newstr)

运行结果如下:
true

19、字符串判断is系列方法

  • string.isalnum()  判断字符串是否有字母和数字组成
  • string.isalpha()  判断字符串是否是字母组成
  • string.isdecimal()  判断字符串是否只包含十进制数字
  • string.isdigit()  判断字符串是否全部数字(0-9)
  • string.isdentifler()  判断字符串是否由字母和下划线开头,其他都是数字,字母、下划线
  • string.islower()  判断字符串是否全部小写
  • string.isupper()  判断字符串是否全部大写
  • string.isspace()  判断字符串是否只包含空白字符