- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
9,如何创建字符串?字符串切片操作的语法格式是怎样的,能举例子说明吗?
10,请对字符串"abcdefgABCDEFG"进行如下切片操作:
一,本章知识简介
主线A:字符串的特点
主线B:字符串的方法
主线C:字符串的格式化
回顾前面知识
pyhthon学习路线:
- pyhton的概述
- pyhton环境安装;
- 注释
- 标识符
- 关键字
- 变量
- 数据类型
- 输入
- 输出
- 运算符
- 选择分支
- 循环结构
二,字符串的特点
1,初识字符串 字符串的不可变性
1 字符串的本质是:字符序列。2 Python不支持单字符类型,单字符也是作为一个字符串使用的
⚠️ Python 的字符串是不可变的,我们无法对原字符串做任何修改。但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改 ” 的效果。
2,字符串的编码
Python3直接支持Unicode,可以表示世界上任何书面语言的字符。Python3的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集。
使用内置函数 ord() 可以把字符转换成对应的 Unicode 码;使用内置函数 chr() 可以把十进制数字转换成对应的字符。
# print('进制转换')
# ASCII_1='''
# ASCII码 字符 ASCII码 字符 ASCII码 字符 ASCII码 字符
# # uniolde汉字编码表 非常详细 可以收藏夹里去找
# # chr()函数可以编码对应的汉字
# # 0b 2进制 0o八进制 非数字0开头可以不用任何东西就是可以代表十进制 0x 十六进制
# # print(chr(0b100111001010100)) #0b表示这个是2进制
# # print(chr(0x4e54)) #0x 表示这个对应的是十六进制
# # print(chr(20052)) # 十进制前面可以不用加任何
# # print(chr(0o47124)) #0o 八进制
3,引号创建字符串
我们可以通过单引号或双引号创建字符串。例如: a='abc' b="sxt"使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:
a = "I'm a teacher!"
print(a) #I'm a teacher!
b = 'my_name is "TOM"'
print(b) #my_name is "TOM"
连续三个单引号或三个双引号,可以帮助我们创建多行字符串。在长字符串中会保留原始的格式。例如:
s='''
I
Love
Python
'''
print(s)
4,空字符串和len()函数
Python允许空字符串的存在,不包含任何字符且长度为0。例如:
c = ''
print(len(c)) #结果:0
len()用于计算字符串含有多少字符。例如:
d = 'abc'
len(d) #结果:3
总结:
python 中字符串使用的是什么字符集 答:unicode
5,转义字符
我们可以使用 \+特殊字符 ,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:
测试转义字符的使用
a = 'I\nlove\nU'
print(a)
print('aabb\\cc')
输出:IloveUaabb\cc
6,字符串拼接
- 可以使用 + 将多个字符串拼接起来。例如: ’aa’+ ’bb’ 结果是 ’aabb’
- 1 如果 + 两边都是字符串,则拼接。
- 2 如果 + 两边都是数字,则加法运算
- 3 如果 + 两边类型不同,则抛出异常
- 可以将多个字面字符串直接放到一起实现拼接。例如: ’aa’’bb’ 结果是 ’aabb’
# 字符串的拼接 .join ,+ .join可以拼接字符串和列表还有元组,+可以直接拼接字符串 应用
# st=['4','a','r']
# st1='-'.join(st)
# print(list(st1))
# print(st,st1,type(st1),type(st)) #['4', 'a', 'r'] 4-a-r <class 'str'> <class 'list'>
# st2=st1+'-'+'c'
# print(st2) #4-a-r-c
# 如果两边都是数字 + 可以直接运算;如果两边是同一类型,则可以相互拼接.如果两边不是容一类型 则需要转换同能类型方能运算
#字符串的替换 replace()
a='231213'
a=a.replace('2','凡梦',1) #旧 的换新的
print(a) #凡梦31213
#使用索引去正向和反向搜索字符串
# a='0123456'
# print(a[0],a[-1],) #从0开始计算
7,字符串复制
使用 * 可以实现字符串复制
print('abc'*3) #abcabcabc
8,不换行打印
我们前面调用print时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行符。我们可以自己通过参数end = “任意字符串”。实现末尾添加任何内容:
print("s",end=' ')
print("sss",end='##')
print("ssss")
9,从控制台读取字符串
我们可以使用input()从控制台读取键盘输入的内容。
myname = input("请输入名字:")
print("您的名字是:"+myname)
问答: 转义字符中,换行的哪一个? 答:\n
二,字符串的操作
1,replace() 实现字符串替换
字符串是 “ 不可改变 ” 的,我们通过 [] 可以获取字符串指定位置的字符,但是我们不能改变字符串。我们尝试改变字符串中某个字符,发现报错了:
a = 'abcdefg'
a[1]='c'
print(a) #TypeError: 'str' object does not support item assignment
a = 'abcdefg'
# a[1]='c'
# print(a) #TypeError: 'str' object does not support item assignment
a = a.replace('b', '0')
print(a) #abcdefg
整个过程中,实际上我们是创建了新的字符串对象,并指向了变量 a,而不是修改了以前的字符串。
2,str()实现数字转型字符串
str()可以帮助我们将其他数据类型转换为字符串。例如:
a = str(5.20) #结果是:a = ‘5.20’
b = str(3.14e2) #结果是:b = ’314.0’
c = str(True) #结果是:c = ‘True’
当我们调用 print() 函数时,解释器自动调用了 str() 将非字符串的对象转成了字符串。
3,使用[]提取字符
字符串的本质就是字符序列,我们可以通过在字符串后面添加[]在[]里面指定偏移量,可以提取该位置的单个字符。
正向搜索:
最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str)-1为止。
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。
使用 [] 提取字符串中的字符
a = 'abcdefg'
# a[1]='c'
# print(a) #TypeError: 'str' object does not support item assignment
a = a.replace('b', '0')
print(a) #abcdefg
print(a[1],a[0],a[:]) #0 a a0cdefg
超出范围会触发出界异常
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
a[-30]
IndexError: string index out of range
4,字符串切片slice操作
切片slice操作可以让我们快速的提取子字符串。标准格式为:
[起始偏移量start:终止偏移量end:步长step]
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移小于0则会当做0,终止偏移量
"abcdefghijklmnopqrstuvwxyz"[::-1]
#
'zyxwvutsrqponmlkjihgfedcba'
大于“长度-1”会被当成-1。例如:
以下代码并不会报错:
>>> "abcdefg"[3:50]
'defg'
print('xsjxsjxjs'[::3]) #xxx
# 012345678
#0 3 6
print('abcd'[::-1]) #dcba
5,split()分割和join()合并
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。示例代码如下:
a='to be or not to be'
print(a.split()) #['to', 'be', 'or', 'not', 'to', 'be']
print(a.split('be')) #['to ', ' or not to ', '']
print(a.split('be',1)) #['to ', ' or not to be']
print(''.join(['to ', ' or not to be'])) #to or not to be
print('*'.join(['to', 'be', 'or', 'not', 'to', 'be'])) #to*be*or*not*to*be
拼接字符串要点: 使用字符串拼接符 + ,会生成新的字符串对象,因此不推荐使 用 + 来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
6,字符串驻留机制和字符串比较
字符串驻留:常量字符串只保留一份
c = "dd#"
d = "dd#"
print(c is d) #True
7,字符串比较和同一性
我们可以直接使用 == != 对字符串进行比较,是否含有相同的字符。我们使用 is not is ,判断两个对象是否同一个对象。比较的是对象的地址,即 id(obj1) 是否和 id(obj2) 相等。
8,成员操作符判断子字符串
in not in 关键字,判断某个字符(子字符串)是否存在于字符串中。
"ab" in "abcdefg" #true
三,字符串的常用方法
1,字符串的增删改
#字符串的增删改差
#增用的方法
可以用+ 可以用jion函数
可以用center函数排版给两头添加 (ljust 给开头部分添加,tlust 给结尾部分添加)
#删
可以用替换函数 replace函数
也可以用sltip函数 给中间或者开始分贝添加不同的字符(lsltip 删除前面的第一个 rsltip 删除后面)
#改 更改大写,
st.upper 更改成小写 st.lower() 大小写呼唤 st,swapcasr() 首字母和每个单子的首字母也可以大写
#查 切片【】 find rfind index rindex函数 connt函数判断该字符出现了多少次
2,字符串的特征判断
#字符串的大小写转换 #把字符拆首字母改成大写 st.capitalize() #把字符串每个单词首字母都大写 st.title() # 把字符串全部更改为大写 st.upper() #把字符串全部更改为小写 st.lower() #把字符串大写改成小写 小写改成大写 st.swapcasr() #字符串的判断 #判断是否都为大写 st.isupper() #判断是否都为小写 st.islower() #判断首字母是否是大写 st.iscapitalite() #判断为字母和数字构成 st.isalnum() #判断是否都是数字 st.isdigit() #判断是否都是字符 只有字母构成(包括汉字) st.isalpha() #判断是否为空白符号 st.isspace()
3,字符串的查找
字符串的查找方法指的是查找元素(或子串)在字符串内容的索引位置。
查找方法有:
函数名 | 含义 |
---|---|
find(sub) | 检测sub是否包含在字符串中,如果是,则返回sub所在开始的索引,否则返回-1。 |
index(sub) | 与find()类似,只不过当sub在字符串中不存在时,会报错误。 |
rfind(sub) | 从右往左找子串在字符串的某个索引。 |
count(sub) | 计算sub在字符串中出现的总次数。 |
例如,一起来完成:
(1)定义一个字符串变量,内容为:hello world and itcast and itheima and Python;
(2)分别使用find()和index()函数来查看and所在位置;
(3)思考1:如果查找不存在的内容666,效果如何?
(4)思考2:若要从右往左查找and,该怎么做?若还要获取and出现的总次数呢?
(5)扩展:字符串的操作方法那么多,该怎么记忆呢?
# 1.定义字符串
name = "hello world and itcast and itheima and Python"
# 2.and -find() index()
# print(name.find("and"))
# print(name.index("and"))
# 3.对比find index
# print(name.find("666")) # 稳定
# print(name.index("666")) # 报错
# 4.从右往左 right
# print(name.rfind("and"))
# print(name.rindex("and"))
# 总次数
# print(name.count("and"))
# 5.如何记忆
# a.头脑
# b.技巧: 看快捷提示
# name.
==总结:==
(1)当要查找字符串的某元素时,可以使用find()、index();
(2)注意:实际应用中,优先使用(==find()==)方法查找字符串元素,因为这个方法更稳定
四,类型转换
与 C++ 、 Java 等高级程序设计语言一样, Python 语言同样也支持数据类型转换。
转换大全:
五,字符串的遍历
1,for循环遍历
先来看看,for循环语法:
for 临时变量 in 序列:
满足条件时,执行的代码1
满足条件时,执行的代码2
……
[else:
当for循环正常执行结束后,执行代码]
例如,一起来完成:
(1)定义一个字符串变量,内容为:ABCDEF;
(2)使用for循环来遍历元素;
(3)执行程序,观察效果。
# 1.定义字符串
strs = "ABCDEF"
# 2.使用for遍历
for temp in strs: # 疑问: 元素对应索引值?
print(temp)
# 3.扩展 -else
# for temp in strs:
# print(temp)
# else:
# print("所有字符串元素已遍历结束!!")
==总结:==
(1)如果想快速获取字符串的所有元素,可以直接使用for循环;
(2)注意:使用for语句遍历字符串时,无法直接显示索引值。
2,使用while遍历字符串
先来看看,while循环语法:
初始化变量语句
while 循环条件:
循环体语句
改变循环条件的语句 # 先写
接着,再来看看获取长度。
函数名 | 含义 |
---|---|
len(s) | 返回变量s的长度或元素个数。 |
获取元素值的语法:
变量名[索引值]
例如,一起来完成:
(1)定义一个字符串变量,内容为:ABCDEF;
(2)使用while循环来遍历元素;
(3)执行程序,观察效果。
# 1.定义字符串变量
strs = "ABCDEF"
# 2.写循环
i = 0
# while i < len(strs):
while i <= (len(strs)-1):
# 3.访问元素
print(strs[i])
i += 1
(1)如果要获取字符串的所有元素,可以使用while循环;
(2)注意:我们会发现,可以使用for或while来遍历字符串,但优先考虑使用(==for==)循环来遍历。
六,字符串的综合测试
1. python中字符串默认使用的是什么字符集?
Unicode
2,如下代码,打印输出的结果是?
b = 'my_name is "TOM"'
print(b)
my_name is "TOM"
3,转义字符中,换行和制表分别是?
\t 制表符 \n换行符
4,如下代码,输出正确结果是?
a = 13
b = "14"
c = a+b
print(c)
报错,类型错误,字符串和数字不同类型 不能直接相互加
5,python中关于字符串的简述
字符串是内置类型,字符串不可改变
6,将”abcdefg”字符串倒叙输出,用切片如何实现?
”abcdefg”[::-1]
7,聊一聊使用 + 和 join() 拼接字符串的区别?
字符串拼接符 + ,会生成新的字符串对象join 函数仅新建一次对象+ 和 join() 的作用都是用来:拼接字符串推荐使用join()拼接字符串
8,转整数、转浮点数、转字符串,分别是哪几个方法?
int() 转整数float() 转浮点数str() 转字符串
9,如何创建字符串?字符串切片操作的语法格式是怎样的,能举例子说明吗?
1:使用引号引起来的就是字符串;
2:切片
[起始:结束]
或
[起始:结束:步长]
注意:选取的区间属于左闭右开型,
即从“起始”位开始,到“结束”位的前一位结束(注意:不包含结束位本身)。
10,请对字符串"abcdefgABCDEFG"进行如下切片操作:
a.获取第1个位的元素值,获取下标为5的元素值;
b.截取下标值[3, 7)的内容;
c.截取下标值5到结尾的内容;
d.截取下标值1到倒数第3个的内容;
e.截取起始处到下标值为9的内容;
f.截取下标2到12且每隔3个字母截取一下内容。
data = "abcdefgABCDEFG"
# 请对字符串"abcdefgABCDEFG"进行如下切片操作:
# a.获取第1个位的元素值,获取下标为5的元素值;
print(data[0])
print(data[5])
# b.截取下标值[3, 7)的内容;
print(data[3:7])
# c.截取下标值5到结尾的内容;
print(data[5:14])
print(data[5:len(data)])
print(data[5:])
# d.截取下标值1到倒数第3个的内容;
print(data[1:12])
print(data[1:-2])
# e.截取起始处到下标值为9的内容;
print(data[0:9])
print(data[:9])
# f.截取下标2到12且每隔3个字母截取一下内容。
print(data[2:12:3])
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用