目录
二.字符串strip,lstrip,rstrip左右去空格方法
一.字符串find()和index()获取某个值的位置方法
1.find和index的功能:
- find和index都是返回你想寻找的成员第一次出现的位置
2.find和index的用法:
用法:
string.find(item)->item:你想查询的元素,返回一个整型
string.index(item)->item:你想查询的元素,返回一个整型或者报错
拓展:字符串的位置是从左向右,从0开始的。空格也会算一个元素。
演示:
# coding:utf-8
info = 'this is a string example!'
int_type = info.index('s')
int_type_02 = info.find('s')
print(int_type)
print(int_type_02)
结果:
3
3
进程已结束,退出代码0
3.find与index的区别?
既然它们两个都能用于索引元素在字符串中第一次出现的位置,那它们两个有什么区别呢?
区别:
- 如果find找不到元素,会返回-1
- 如果index找不到元素,会直接导致程序报错
演示:
# coding:utf-8
info = 'this is a string example!'
int_type01 = info.find('u')
int_type02 = info.index('u')
print(int_type01)
print(int_type02)
结果:
Traceback (most recent call last):
File "C:\Users\ds\AppData\Roaming\JetBrains\PyCharmCE2023.1\scratches\scratch_4.py", line 5, in <module>
int_type02 = info.index('u')
^^^^^^^^^^^^^^^
ValueError: substring not found
进程已结束,退出代码1
由此可以看出当用index去索引一个字符串中不存在的元素的首次出现的位置,会直接报错。
而当使用find索引一个字符串中不存在的元素的首次出现的位置,会返回-1
演示:
# coding:utf-8
info = 'this is a string example!'
int_type01 = info.find('u')
print(int_type01)
结果:
-1
进程已结束,退出代码0
所以在日常生活中,建议大家直接选用find函数去获取一个元素在字符串中首次出现的位置
二.字符串strip,lstrip,rstrip左右去空格方法
1.strip的功能:strip将去掉字符串左右两边的指定元素,默认去除空格
2.strip的用法:
用法:newstr=string.strip(item)
参数:括弧里需要传一个你想去掉的元素,可不填写
3.strip的拓展:
- 传入的元素如果不在开头或结尾则无效
- Istrip仅去掉字符串开头的指定元素或空格
- rstrip仅去掉字符串结尾的指定元素或空格
- strip函数不会改变原字符串的值,而是返回一个新的字符串。如果想要改变原字符串,可以使用strip函数的原地操作版本Istrip和rstrip.
- 原地操作版本
:s =' hello '
s = s.rstrip()
print(s) #输出'hello'
但需要注意的是,因为字符串是不可变对象,原地操作版本的rstrip()方法是创建一个原字符串的副本,然后进行修改,并将返回的新字符串重新赋值给原变量。因此,调用rstrip()方法后,原字符串的值会被改变。
演示:
# coding:utf-8
"""
strip去掉的是字符串两边指定的元素或者空格,默认为空格
lstrip去掉的是字符串开头的元素或者空格
rstrip去掉的是字符串结尾的元素或者空格
"""
info = ' my name is sll '
new_info = info.strip() # 什么都不传,默认去除字符串两边的空格
print('.' + info + '.')
print('.' + new_info + '.') # 加.是为了更直观的观察去除空格前后的变化
info_01 = 'my name is sll'
new_info_01 = info_01.strip(info_01)
print(new_info_01)
print(len(new_info_01))
new_str = 'abcdea'
print(new_str.strip('a'))
print(new_str.lstrip('a'))
print(new_str.rstrip('a'))
# 原地操作版本的rstrip()方法是创建一个原字符串的副本,然后进行修改,并将返回的新字符串重新赋值给原变量。
phone_number = ' 13500001111 '
print('这是操作前的内存地址:' + str(id(phone_number)))
phone_number = phone_number.strip()
print('这是操作后的内存地址:' + str(id(phone_number)))
# 从上面可以看出,修改前后变量的内存地址不一致,说明它们已经不是同一个变量
print('.' + phone_number + '.')
结果:
. my name is sll .
.my name is sll.
0
bcde
bcdea
abcde
这是操作前的内存地址:2082998961008
这是操作后的内存地址:2082998961776
.13500001111.
进程已结束,退出代码0
三.字符串的replace()替换方法
1.replace的功能:将字符串中的old(旧元素)替换成new(新元素),并能指定替换的数量
2. replace的用法:
用法:
newstr string.replace(old, new, max)
参数:
old:被替换的元素
new:替代old的新元素
max:可选,代表替换几个,默认全部替换全部匹配的old元素
演示:
# coding:utf-8
info = ('要从小白到一个有经验的开发者,无论是通过视频还是文字教程学习,你会发现很'
'少有初级课程就非常贴近实际工作的,作为一个刚入坑的小白通常并不知道需要学'
'习什么,往往是自认为入门的时候都学习了,到了公司里才发现很多都不会。'
'我希望做这样一个课程,虽是入门课程,但涉及相关领域的多处知识,让小白在学'
'习后进入公司岗位不会因为没听过而蒙圈;同时希望这个课也可以帮助非Python工'
'程师快速转型或者快速转职能')
a = '小白'
b = '一个'
c = '蒙圈'
d = '课程'
e = '*'
f = '0'
g = '$'
o = '@'
# test = info.replace(a, e)
# print(test)
# test = test.replace(b, e)
# print(test)
# test = test.replace(c, g)
# print(test)
# test = test.replace(d, o)
# print(test)
'''
下面这段代码属于链式调用,但不属于原地操作。
链式调用是指对同一个对象进行多次方法调用的过程,
每次方法调用都返回一个新的对象,可以通过连续调用多个方法来实现一系列的操作。
在这个例子中,字符串对象info上连续调用了多个replace方法,
每次调用都返回一个新的字符串对象,最终结果被保存在info中。
原地操作是指把修改后的值直接返回给原对象,不会创建新的对象。
而在这个例子中,每次replace方法调用都返回一个新的字符串对象,
所以不属于原地操作。如果要在原字符串上进行操作,可以使用类似于下面的代码:
'''
# 链式调用,不是原地操作,只是最终结果被保存在info中
info = info.replace(a, e).replace(b, e).replace(c, g).replace(d, o)
print(info)
结果:
要从*到*有经验的开发者,无论是通过视频还是文字教程学习,你会发现很少有初级@就非常贴近实际工作的,作为*刚入坑的*通常并不知道需要学习什么,往往是自认为入门的时候都学习了,到了公司里才发现很多都不会。我希望做这样*@,虽是入门@,但涉及相关领域的多处知识,让*在学习后进入公司岗位不会因为没听过而$;同时希望这个课也可以帮助非Python工程师快速转型或者快速转职能
进程已结束,退出代码0
提示:如果需要替换很多对象,则最好使用简洁,低代码的replace的链式调用方法。
四.字符串bool集合
1.isspace
- 功能:isspace判断字符串是否是个由空格组成的字符串(字符串是否仅仅为空格)
- 用法:booltype=string.isspace()->无参数可传,返回一个布尔类型
- Ps:由空格组成的字符串,不是空字符串
演示:
# coding:utf-8
test_str01 = '' # 这是一个空字符串
print(test_str01.isspace())
test_str01 = ' ' # 这是一个全为空格的字符串
print(test_str01.isspace())
结果:
False
True
进程已结束,退出代码0
2.istitle
- 功能:istitle判断字符串是否是一个标题类型(所有单词全是首字母大写)
- 用法:booltype=String.istitle()->无参数可传,返回一个布尔类型
- Ps:该函数只能用于英文
演示:
# coding:utf-8
test_str01 = 'I Like Python'
print(test_str01.istitle())
test_str01 = 'i like python'
print(test_str01.istitle())
test_str02 = 'I Like PytHOn' # 每部分单词首个字母大写,其他地方为小写,才能被判定为True
print(test_str02.istitle())
结果:
True
False
False
进程已结束,退出代码0
3.isupper与islower
- 功能:isupper判断字符串中的字母是否都是大写,islower判断字符串中的字母是否
都是小写 - 用法:booltype string.isupper ()->无参数可传,返回一个布尔类型
booltype string.islower()->无参数可传,返回一个布尔类型
演示:
# coding:utf-8
test_str01 = 'I LIKE PYTHON'
print(test_str01.isupper())
print(test_str01.islower())
print('*'*16)
test_str01 = 'i like python'
print(test_str01.isupper())
print(test_str01.islower())
print('*'*16)
test_str02 = 'I Like PytHOn'
print(test_str02.isupper())
print(test_str02.islower())
结果:
True
False
****************
False
True
****************
False
False
进程已结束,退出代码0