四,python之字符串. [字符串的特点,操作,常用方法,遍历,综合测试]

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用

目录

一,本章知识简介

二,字符串的特点

1,初识字符串 字符串的不可变性

2,字符串的编码

3,引号创建字符串

4,空字符串和len()函数

5,转义字符

6,字符串拼接

7,字符串复制

8,不换行打印

9,从控制台读取字符串

二,字符串的操作

1,replace() 实现字符串替换

2,str()实现数字转型字符串

3,使用[]提取字符

4,字符串切片slice操作

5,split()分割和join()合并

6,字符串驻留机制和字符串比较

7,字符串比较和同一性

8,成员操作符判断子字符串

三,字符串的常用方法

1,字符串的增删改

2,字符串的特征判断 

3,字符串的查找

四,类型转换

五,字符串的遍历

1,for循环遍历

2,使用while遍历字符串

六,字符串的综合测试

1. python中字符串默认使用的是什么字符集?

2,如下代码,打印输出的结果是?

3,转义字符中,换行和制表分别是?

4,如下代码,输出正确结果是?

5,python中关于字符串的简述

6,将”abcdefg”字符串倒叙输出,用切片如何实现?

7,聊一聊使用 + 和 join() 拼接字符串的区别?

8,转整数、转浮点数、转字符串,分别是哪几个方法?

9,如何创建字符串?字符串切片操作的语法格式是怎样的,能举例子说明吗?

10,请对字符串"abcdefgABCDEFG"进行如下切片操作:


一,本章知识简介

主线A:字符串的特点

主线B:字符串的方法

主线C:字符串的格式化

回顾前面知识

pyhthon学习路线:

  • pyhton的概述
  • pyhton环境安装;
  • 注释
  • 标识符
  • 关键字
  • 变量
  • 数据类型
  • 输入
  • 输出
  • 运算符
  • 选择分支 
  • 循环结构

二,字符串的特点

1,初识字符串 字符串的不可变性

1 字符串的本质是:字符序列。
2 Python不支持单字符类型,单字符也是作为一个字符串使用的
⚠️ Python 的字符串是不可变的,我们无法对原字符串做任何修改。但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改 的效果。

2,字符串的编码

     Python3直接支持Unicode,可以表示世界上任何书面语言的字符。Python3的字符默认就是16Unicode编码,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')
输出:
I
love
U
aabb\cc

6,字符串拼接

  • 可以使用 + 将多个字符串拼接起来。例如: ’aa’+ ’bb’ 结果’aabb’
    1. 1 如果 + 两边都是字符串,则拼接。
    2. 2 如果 + 两边都是数字,则加法运算
    3. 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])

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值