三、字符串操作
文章目录
① 字符串(p102-p108)
字符串是Python最常见的数据类型,我们一般使用引号
来创建字符串,只需为其变量分配一个值即可。
语法:
变量名 = '字符串'
实例
# 单引号
name = 'Tom'
-------------------------------------------------------
# 双引号
name = "Rose"
-------------------------------------------------------
# 三引号(可跨行)
a = '''i am Tom
nice to meet you!'''
1、下标
“下标”
又叫“索引”
,就是编号,例如火车座位号,座位号的作用:按照编号
快速找到对应的座位
。
实例:
-------------------------------------------------------
'''
数据在程序运行过程中存储在内存
?:想得到数据里的a字符,数据里的b字符,如何获取? -- 使用字符串中某个特定数据
数据存储在内存中,内存会为字符从0开始顺序分配一个编号 - 使用编号能够精确找到某个字符数据 -- 下标或索引
'''
-------------------------------------------------------
str = 'abcdef'
print(str[0])
print(str[1])
print(str[4])
-------------------------------------------------------
# 输出结果
a
b
e
注意:字符数据存储在内存中,内存会为字符数据从0开始顺序分配一个编号。
2、切片
切片指对操作对象截取其中一部分的操作
,字符串、列表、元组
都支持切片操作。
语法:
# 语法
序列[开始位置下标:结束位置下标:步长]
注意:①
不包括
结束位置下标对应的数据。 ② 步长是选取间隔
,正负数均可,默认步长为1。
实例:
'''
序列[开始位置下标:结束位置下标:步长]
'''
-------------------------------------------------------
str1 = '0123456789'
# 正数测试
print(str1[1:4:1]) # 123
print(str1[:5]) # 01234 -- 如果不写开始,默认从0开始选取。
print(str1[1:]) # 123456789 -- 如果不写结束,默认选取到最后。
print(str1[:]) # 0123456789 -- 没有范围则代表全部。
print(str1[::2]) # 02468 -- 不写开始和结束,默认选取所有
-------------------------------------------------------
# 负数测试
print(str1[::-1]) # 9876543210 -- 如果步长为负数,表示倒叙选取
print(str1[-4:-1]) # 678 -- 下标-1表示最后一个数据,以此类推
-------------------------------------------------------
② 字符串常用操作方法
字符串的常用操作
方法有查找、修改、判断
三大类。
1、查找
所谓字符串查找方法
,即是查找
字符串中的位置
和出现次数。
1.1、find 查找子串
- find(): 检测
某个子串
是否包含
在这个字符串
中,如果在则返回
这个子串开始
的位置下标
,否则返回-1
。 - rfind(): 与find()功能相同,但
查找方向
为右侧开始。
语法:
# 语法 子串:字符串中的一部分字符
-------------------------------------------------------
字符串序列.find(子串,开始位置下标,结束位置下标)
-------------------------------------------------------
注意:1、开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2、不包括结束位置下标对应的数据
实例:
mystr = "hello world and itcast and itheima and Python"
# 1. find()
print(mystr.find('and')) # 12
print(mystr.find('and',15,30)) # 23
print(mystr.find('ands',15,30)) # -1 , ands子串不存在
-------------------------------------------------------
# 2. rfind()
print(mystr.rfind('and')) # 35
1.2、index 查找子串
- index(): 检测
某个子串
是否包含
在字符串
中,如果在则返回
这个子串开始
的位置下标
,否则出现报错。
- rindex(): 与index()功能相同,但
查找方向
为右侧开始。
语法:
# 语法 子串:字符串中的一部分字符
-------------------------------------------------------
字符串序列.index(子串,开始位置下标,结束位置下标)
-------------------------------------------------------
注意:1、开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2、不包括结束位置下标对应的数据
实例:
mystr = "hello world and itcast and itheima and Python"
# 1. find()
print(mystr.index('and')) # 12
-------------------------------------------------------
print(mystr.index('ands')) # 报错(输出结果在下方)
-------------------------------------------------------
# 2. rfind()
print(mystr.rfind('and')) # 35
-------------------------------------------------------
# 异常演示
Traceback (most recent call last):
File "F:\Feature_Detection\test.py", line 7, in <module>
print(mystr.index('ands')) # 35
ValueError: substring not found
1.3、count 统计次数
- count(): 返回某个
子串
在字符串
中出现的次数。
语法:
字符串序列.count(子串)
实例:
mystr = "hello world and itcast and itheima and Python"
print(mystr.count('and')) # 3
print(mystr.count('it')) # 2
print(mystr.count('ands')) # 0
2、修改
所谓修改
字符串,指的就是通过函数
的形式修改
字符串中的数据。
2.1、replace替换子串
- replace(): 替换
语法:
字符串序列.replace(旧子串,新子串,替换次数)
注意:①
替换次数
如果超出
子串出现次数,则替换次数
为子串出现次数。
② replace函数有返回值
,返回修改后
的字符串
。原有的字符串不会改变
实例:
mystr = "hello world and itcast and itheima and Python"
mystr.replace('and','he')
print(mystr) # 输出结果:hello world and itcast and itheima and Python
-------------------------------------------------------
new_mystr = mystr.replace('and','he',1)
print(new_mystr) # 输出结果:hello world he itcast and itheima he Python
-------------------------------------------------------
'''
# 结论
***** 调用了replace函数后,发现原有字符串的数据并不会被修改,修改后的数据是replace函数的返回值。
--- 说明:字符串是不可变数据类型
数据按照是否能修改分为可变数据类型和不可变数据类型
'''
注意:数据按照是否能
修改
分为可变数据类型
和不可变数据类型
,字符串类型的数据修改
时不能改变
原有字符串,属于不可变数据类型。
数据类型 | 可变/不可变 |
---|---|
整型 | 不可变 |
字符串 | 不可变 |
元组 | 不可变 |
列表 | 可变 |
集合 | 可变 |
字典 | 可变 |
2.2、split 分割字符串(列表)
- split():按照指定
字符
分割字符串,返回一个
列表
语法:
字符串序列.split(分割字符,num)
注意:① num表示的是
分割
字符出现的次数,即将来返回数据(列表)个数为num+1个。
② 如果分割字符是原有字符串中的子串,分割后则丢失
该子串
实例:
mystr = "hello world and itcast and itheima and Python"
# split() -- 分割,返回一个列表,丢失分割字符
list1 = mystr.split('and')
list2 = mystr.split('and',2)
print(list1)
print(list2)
-------------------------------------------------------
# 输出结果
['hello world ', ' itcast ', ' itheima ', ' Python']
['hello world ', ' itcast ', ' itheima and Python']
2.3、join 合并字符串
- join(): 用一个
字符
或子串
合并字符串
,即是将多个字符串合并为一个新的字符串。
语法:
字符或子串.join(多字符串组成的序列)
实例:
# join() -- 合并列表里的字符串数据为一个大字符串
mylist = ['zheng','jun','hao']
new_str1 = '...'.join(mylist)
new_str2 = '*'.join(mylist)
print(new_str1)
print(new_str2)
-------------------------------------------------------
# 输出结果
zheng...jun...hao
zheng*jun*hao
3、字符大小写转换
3.1、capitalize 字符串开头大写
- capitalize(): 将字符串
第一个
字符转换成大写
语法:
字符串.capitalize()
注意:capitalize( )函数转换后,字符串第一个字符
大写
,其他的字符全都小写。
实例:
mystr = "hello world and itcast and itheima and Python"
print(mystr.capitalize())
-------------------------------------------------------
# 输出结果:
Hello world and itcast and itheima and python
3.2、title 字符串每个单词开头大写。
- title():将字符串
每个
单词首字母
转换成大写
语法:
字符串.title()
实例:
mystr = "hello world and itcast and itheima and Python"
print(mystr.title())
-------------------------------------------------------
# 输出结果:
Hello World And Itcast And Itheima And Python
3.3、upper 字符串小写转大写
- upper():将字符串中
小写
转大写
语法:
字符串.upper()
实例:
mystr = "hello world and itcast and itheima and Python"
print(mystr.upper())
-------------------------------------------------------
# 输出结果
HELLO WORLD AND ITCAST AND ITHEIMA AND PYTHON
3.4、lower 字符串大写转小写
- lower():将字符串中
大写
转小写
语法:
字符串.lower()
实例:
mystr = "HELLO WORLD AND ITCAST AND ITHEIMA AND PYTHON"
print(mystr.lower())
-------------------------------------------------------
# 输出结果
hello world and itcast and itheima and python
4、判断
4.1、isalpha 判断否为 字母
- isalpha():字符串里至少有一个字符,并且所有字符都是
字母
,则返回True
,否则返回Flase。
语法:
字符串.isalpha()
实例:
mystr1 = 'hello'
mystr2 = 'hello12345'
# 判断是否都为字母
print(mystr1.isalpha())
print(mystr2.isalpha())
-------------------------------------------------------
# 输出结果
True
Flase
4.2、isdigit 判断是否为 数字
- isdigit():如果字符串
只
包含数字
则返回True
否则则返回Flase
。
语法:
字符串.isdigit()
实例:
mystr1 = '12345'
mystr2 = 'hello12345'
# 判断是否都为数字
print(mystr1.isdigit())
print(mystr2.isdigit())
-------------------------------------------------------
# 输出结果
True
Flase