一、字符串的定义
- 1.1、字符串 就是 一串字符,是编程语言中 表示文本的数据类型
- 1.2、在 Python 中可以使用一对双引号
"
或者一对单引号'
定义一个字符串(推荐使用双引号"
,因为绝大多数的语言字符串都是用双引号)
- 如果字符串内部需要使用
"
,可以使用'
定义字符串- 如果字符串内部需要使用
'
,可以使用"
定义字符串
- 1.3、 可以使用 索引 获取一个字符串 中 指定位置的字符,索引的计数从 0 开始
string = "hello Python" print(string[1])
- 1.4、也可以使用
for
循环遍历 字符串中每一个字符
string = "hello Python" for c in string: print(c)
二、字符串的常用操作
- 2.1、统计字符串的长度
string = "hello Python" print(len(string)) 打印结果是:12
- 2.2、统计一个字符或者字符串在另外一个字符串里面出现的次数
string = "hello Python" print(string.count("o")) 打印结果是:2
- 2.3、某一个子字符串在大字符串中第一次出现的索引,如果在另外一个字符串(大字符串)里面不存在就会报错
string = "hello Python" print(string.index("P")) 打印结果是:6 print(string.index("p")) # 报错
三、字符串的方法分类
- 3.1、判断类型(9个)
方法 | 说明 |
string.isspace() | 如果 string 中只包含空字符串(\t、\r、\n),则返回 True |
string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True |
string.isalpha() | 如果string 至少有一个字符并且所有字符都是字母则返回True |
string.isdecimal() | 如果string 只包含数字则返回 true,全角数字(也就是阿拉伯数字:1234) |
string.isdigit() | 如果 string 只包含数字则返回True,(1),\u00b2 |
string.isnumeric() | 如果string 只包含数字则返回True,全角数字,汉字数字 |
string.istitle() | 如果 string 是标题华的(每个单词的首字母大写)则返回 True |
string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写 ,则返回True |
string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写 ,则返回True |
- 简单举例(1): 判断string 中只包含空字符串,
(\t: 垂直对齐、\r: 回车、\n: 换行)也是空字符
stringSpace = " \t" print(stringSpace.isspace()) 打印结果是 True
- 简单举例(2): 判断string 至少有一个字符并且所有字符都是字母或数字则返回 True
string = "123,PPP" print(string.isspace()) 打印结果是 False
- 简单举例(3): 判断数字的三个方法:
string.isdecimal()
,string.isdigit()
,string.isnumeric()
,判断的范围是逐渐扩大
- 第一点:三个方法都不可以判断小数
number_str = "1.3" print(number_str.isdecimal()) print(number_str.isdigit()) print(number_str.isnumeric()) 打印结果是: False False False
- 第二点:isdecimal()只可以判断全角数字,也就是只能判断阿拉伯数字:1234567......
- 第三点:isdigit()在isdecimal()的基础上还可以判断 unicode 字符串
- 第四点:isnumeric()在isdigit()的基础上还可以判断 中文字符,如: 一二三四百千万
- 3.2、查找和替换(7个)
方法 | 说明 |
string.startswith(str) | 检查字符串是否是以 str 开头,是则返回 True |
string.endswith(str) | 检查字符串是否是以 str 结束,是则返回 True |
string.find(str,start=0,end=len(string)) | 检测 str 是否包含在 string 中,如果是 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 |
string.rfind(str,start=0,end=len(string)) | 类似于 find() 函数,不过是从右边开始查找 |
string.index(str,start=0,end=len(string)) | 跟 find() 方法类似,不过如果 str 不在 string 会报错 |
string.rindex(str,start=0,end=len(string)) | 类似于 index() 函数,不过是从右边开始 |
string.replace(old_str,new_str=0,num=string.count(old)) | 把string 中的old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次 |
- 简单举例(1): 检查字符串是否是以 str开头,是则返回 True
string= "str I Love You !" print(string.startswith("str")) 打印结果是: True
- 3.3、大小写转换(5个)
方法 | 说明 |
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串的每个单词首字母大写 |
string.lower() | 转换 string 中 所有大写字符为小写 |
string.upper() | 转换 string 中 所有小写字母为大写 |
string.swapcase() | 翻转 string 中的大小写 |
- 简单举例(1): 把字符串的每个单词首字母大写(
每个单词之间有空格才代表一个单词
)
string = "str i love you !" print(string.title()) 打印结果是: Str I Love You !
- 3.4、文本对齐(3个),记得输入一个字符串的宽度
方法 | 说明 |
string.ljust(width ) |
返回一个字符串左对齐,并使用空格填充至长度 width 的新字符串 |
string.rjust(width ) |
返回一个字符串右对齐,并使用空格填充至长度 width 的新字符串 |
string.center(width ) |
返回一个字符串居中,并使用空格填充至长度 width 的新字符串 |
- 简单举例(1):返回一个字符串居中,并使用空格填充至长度 width 的新字符串
string = " str i love you !I want to play " print(string.center(10)) # 如果想要英文也对齐,那么就要增加 中文空格: # print(string.center(10," ")) 打印结果是: str i love you !I want to play
- 3.5、去除空白字符(3个)
方法 | 说明 |
string.lstrip() | 截掉 string 左边 (开始) 的空白字符 |
string.rstrip() | 截掉 string 右边 (末尾) 的空白字符 |
string.strip() | 截掉 string 左右两边的空白字符 |
- 3.6、拆分和连接(5个)
方法 | 说明 |
string.partition(str) | 把字符串 string 分成一个 3 元素的元组(str前面,str,str后面) 返回值是:元组 |
string.rpartition(str) | 类似于 partition() 函数,不过是从右边开始查找 返回值是:元组 |
string.split(str,num) | 以 str 为分隔符切片string ,如果 num 有指定值,则仅分割 num + 1 个字符串,str 默认包含 \r ,\t ,\n 和 空格,返回值是列表 |
string.splitlines() | 按照行(\r ,\t ,\n )分割,返回一个包含各行作为元素的列表 |
string.join(seq) | 以string 作为 分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
- 简单举例(1):以 str 为分隔符切片string ,如果 num 有指定值,则仅分割
num + 1
个字符串,str 默认包含\r
,\t
,\n
和 空格,返回值是列表
string = "str i love you y!I want to play" print(string.split("y",1)) # 代表分割成的列表是 `2+1` 个元素 打印结果是: ['str i love ', 'ou y!I want to play'] print(string.split("y",2)) # 代表分割成的列表是 `2+1` 个元素 打印结果是: ['str i love ', 'ou ', '!I want to play']
四、字符串的切片
- 4.1、 切片 方法 适用于 字符串、列表、元组
- 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
- 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
- 字典 是一个 无序的集合,是使用 键值对 保存数据
字符串[开始索引:结束索引:步长]
- 注意:
- 指定区间属于 左闭右开型 :从
起始
位开始,到结束
位的前一位 结束 (不包含结束位本身)- 从头开始,开始索引 数字可以省略,冒号不能省略
- 到末尾结束,结束索引 数字可以省略,冒号不能省略
- 步长默认为
1
,如果连续切片,数字和冒号都可以省略
- 4.2、看下面的几个例子练习最初的字符串都是
string = "Hi boy,I Love You"
- 截取从 2~5 位置的字符串(因为是右边是开区间,所以要写到第6位)
print(string[2:6]) # 因为步长为 1,后面的 :1 可以省略
- 截取从 2~末尾 的字符串
print(string[2:])
- 截取从 开始~5 位置的字符串
print(string[0:6])
- 截取完整的字符串
print(string[:])
- 从开始位置,每隔一个字符串截取字符串( 步长一看就是 2)
print(string[::2])
- 从索引 1 开始,每隔一个取一个
print(string[1::2])
- 截取从 2~末尾-1 的字符串
print(string[2:-1])
- 截取字符串末尾两个字符
print(string[-2:]) # 因为步长为 1,后面的 :1 可以省略
- 字符串的逆序
print(string[::-1]) print(string[-1::-1])