学习内容:
本次学习 Python 中字符串的相关内容,具体如下:
1、 字符串的定义
2、 字符串的下标
3、 字符串的切片
4、 字符串的查找
5、 字符串的替换
6、 字符串的切割
7、 len()函数、join() 函数、strip()函数用法介绍
1、字符串的定义
前面的学习中介绍了,Python 中有整形(int),浮点型(float),字符型(string),布尔型
四大数据类型。简单点说字符串(也就是字符型的数据)就是代码中用引号引起来的内容。(引号可以是单引号,双引号和三引号,注意是英文键盘下的引号)。假设当你想使用print()
函数输出Hello World
,此时就需要将Hello World
用引号包裹起来,否则代码执行会报错。
内容补充:
- 当你想要使用的字符串中,如果存在引号(单引号或双引号),此时可以使用三引号来定义字符串,例如
astr = '''I'm OK'''
。对比在 C或C++ 语言中,打印单引号需要使用\'
,这种直接使用引号的方式明显方便了很多 - 在Python中,支持使用字符串*整数n的形式,表示将字符串打印 n 次,例如
print('Hello' * 3)
表示将Hello
打印三次,得到的就是HelloHelloHello
- 当需要定义一个空字符串的时候,可以使用
变量 = str()
的格式,但一般不会直接定义空字符串,因为字符串的内容只要确定了就不能更改,但可以使用str()
将其它数据类型的数据转化为字符串类型
2、字符串的下标
说到字符串的下标,如果学习过C或C++,那么肯定都知道数组,在C或C++中,我们想要获取数组中某一个数据的时候,需要使用的也是下标,在Python中也支持下标操作。但与之不同的是,Python中支持双向下标操作,而C或C++中并不支持,下面用一个表格来看一下双向下标具体是怎样的:
由表格内容可以很容易的知道,从左往右的下标是从 0 开始逐渐增大的,而从右往左的下标是从 -1 开始逐渐减小的。采用这种方式有一个好处就是,当我们不知道一个字符串的长度,但想知道最后一个字符是什么,此时可以使用字符串[-1]
的方式就可以得到数据。
补充一下:下标操作使用中括号进行索引,格式是字符串[下标]
,比如有一个字符串 a = 'Hello'
,那么获取第二个数据用的就是a[2]
。
3、字符串的切片
字符串切片的作用简单说就是用来得到一个已知字符串的某一个范围内的数据,用法如下:
- 格式:
_str=str1[start:end:step]
- 表示的是从 str1 中得到一个下标从start–>end,但不包含下标end,且间隔为step的新的字符串,然后将这个新的字符串给到 _str 变量中
- 在使用切片的时候,中括号里面的数据是根据自己的需求填写的,可以写也可以不写,不写的话表示将原来的字符串 str1 内容完全给到 _str 中,但冒号必须写,不写冒号则表示下标操作,并不是切片
- 通过使用step的值,可以得到字符串中任意间隔的数据,当我们想将一个字符串逆置的时候,可以使
step=-1
,即_str = str1[::-1]
举个小栗子:
str1 = 'Congratulation'
_str1 = str1[2:4] # 获取下标为 2~4 的字符,不包含下标为 4 的字符,下面的同理
_str2 = str1[5:] # 获取下标从 5 开始到结束的字符
_str3 = str1[:4] # 获取下标从 0~4 的字符
_str4 = str1[::2] # 获取 str1 中间隔为 2 的字符
_str5 = str1[::-1] # 将 str1 逆置
print(str1)
print(_str1)
print(_str2)
print(_str3)
print(_str4)
print(_str5)
对应的结果如下:
通过对比切片前后得到的字符串可以很容易知道,切片得到的是一个新的字符串,并不会改变原来的字符串
4、字符串的查找
字符串的查找在编程中会经常用到,在Python中字符串的查找主要分为两类:一类是在已定义的字符串中查找是否存在某一个字符串;另一类是查找已定义的字符串中出现某个字符(或字符串)的个数。具体如下:
1)查找是否存在:find() /rfind()
, index() /rindex()
- 格式:
已定义的字符串.find(查找的字符串,开始位置,结束位置)
- 在使用的时候开始位置和结束位置可以不用写,默认在整个字符串范围内查找
- 举例:
my_str.find('he', 0, 5)
,表示在my_str
中查找字符he
,查找的范围是字符串my_str
的下标从0~5 find() /rfind()
两个函数的使用是一样的,不同点在于前者是从字符串的左边开始往右查找,后者是从右往左进行查找。(index() /rindex()
两个函数同理)
find()
,index()
两个函数的比较:
- 当在已知字符串中找到查询的字符时
两者的结果一样,都会返回一个下标。这个下标是需要查找的字符串中的第一个字符的下标,例如查找字符串
hello
,当查找到的时候会返回h
在已定义的字符串中对应的下标
- 当没有查找到对应的字符的时候:
find()
函数会返回-1,但index()
函数会直接报错
在 pycharm 的交互界面中用代码比较一下:
2)查找出现的字符个数:count()
- 格式:
已定义的字符串.count(查找的字符串,开始位置,结束位置)
- 同理,开始位置和结束位置也可以不用写,默认搜索整个字符串
- 举例:
my_str.count('he')
,代表在my_str
中查找字符串he
,返回值是he
在my_str
中出现的次数
5、字符串的替换
字符串的替换使用replace()
函数,由于字符串的内容一旦确定了就不能更改,所以即使使用replace()
函数得到的也只是一个新的字符串
- 格式:
已定义的字符串.replace(旧字符串,新字符串,次数)
- 在默认情况,次数可以不写,表示替换所有已存在的字符串,也可以指定需要替换的次数
- 当旧字符串不存在的时候,代码不会报错,也不会进行替换
用下面的代码举个栗子:
str1 = 'Hello World'
_str1 = str1.replace('World', 'Python')
_str2 = str1.replace('k', 'm') # 不存在字符 k, 所以不会替换
print(str1)
print(_str1)
print(_str2)
6、字符串的切割
字符串的切割使用的是split()
函数,使用字符串的切割得到的是一个列表,也不会改变原来的字符串
- 格式:
已定义的字符串.split(字符串,次数)
- 在这里,函数里面的字符串和次数都可以不写,在默认状态下,以空白字符,Tab键等内容等进行切割
- 有需要的时候,可以使用
rsplit()
函数指定从右往左进行切割
举例了解一下:
str1 = 'What is your name'
str2 = 'What_is_your_name'
_str1 = str1.split() # 默认以空格切割
_str2 = str2.split('_') # 指定使用下划线切割
print(_str1)
print(_str2)
# 使用 for 循环遍历一下:
for i in _str1:
print(i, end=' ')
结果如下:
7、len()
, join()
, strip()
函数的用法介绍
len()
函数:可以用来统计容器中元素的个数,例如字符串中的字符个数join()
函数:可以将一个字符串插入到可迭代对象的每两个元素之间,使用方法字符串.join(可迭代对象)
strip()
函数:能够将字符串中字符前后的空格(包括\n
)去掉
对三个函数举例说明一下:
str1 = ' Hello '
str2 = 'Hello'
a = len(str2) # len() 函数:统计字符的个数
b = '_'.join(str2) # join() 函数:将下划线插入到可迭代对象的每两个元素之间
c = str1.strip() # strip() 函数:将字符串前后的空格及 '\n' 去掉
print(a)
print(b)
# 比较去掉字符串前后的空格时,原字符串和去掉后字符串的变化
print(c)
print(str1)