Python小白学习教程从入门到入坑——第八课 字符串的查找、判断、修改(语法基础)
目录
字符串常见操作
1. 查找
1.1 find()
1.2 index()
1.3 count()
2. 判断
2.1 startswith()
2.2 endswith()
2.3 isupper()
3. 修改
3.1 replace()
3.2 split()
3.3 capitalize()
3.4 lower()
3.5 upper()
字符串常见操作
1. 查找
1.1 find()
find:检测某个子字符串是否包含在字符串中,如果在就返回这个子字符串开始位置的下标,否则就返回“-1”
find(子字符串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串中查找
eg:
name = 'bingbing'
print(name.find('i')) # 1---第一个i的下标为1
print(name.find('bing')) # 0---检测到第一个第一个bing,b的下标为1
print(name.find('b',3)) # 4---从下标为3的g开始往后查找,第一个b的下标为4
print(name.find('b',5)) # -1---超出范围,不包含b,返回-1
print(name.find('b',3,5)) # 4---在下标为3-5位置范围内查找
# 包前不包后
print(name.find('b',3,4)) # -1---从下标为3的g开始往后查找,截至到下标为4的第二个b,但不包含b,所以输出值为-1
1.2 index()
index(): 检测某个子字符串是否包含在字符串中,如果在就返回这个子字符串开始位置的下标,否则就会报错
index(子字符串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串中查找
eg:
name = "我命由天不由我"
print(name.index("命")) # 1
# print(name.index("命",2)) # 报错,从下标2开始找,没有找到
print(name.index("命",1,3)) # 1
# 和find一样,同样遵循包前不包后规则
# 和find的区别:find没找到,返回-1,index没找到就会报错
1.3 count()
count(): 返回某个子字符串在整个字符串中出现的次数,没有就返回0
count(子字符串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串中查找,同样遵循包前不包后规则
eg:
name = "bingbing"
print(name.count('b')) # 2
print(name.count('a')) # 0
print(name.count('b',1)) # 1
print(name.count('b',1,3)) # 0
print(name.count('b',1,4)) # 0 ---同样遵循包前不包后规则
2. 判断
2.1 startswith()
startswith():是否以某个子字符串开头,是的话就返回True,不是的话就返回False,如果设置开始和结束位置,则在指定范围内检查
startswith(子字符串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串中查找,同样遵循包前不包后规则
eg:
st = 'university'
print(st.startswith('uni')) # True
print(st.startswith('ver')) # False
print(st.startswith('v',3,6)) # True
2.2 endswith()
endswith():是否以某个子字符串结尾,是的话就返回True,不是的话就返回False,如果设置开始和结束位置,则在指定范围内检查
endswith(子字符串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串中查找,同样遵循包前不包后规则
eg:
# 示例字符串
s = "Hello, world! This is a test string."
# 检查是否以 "string." 结尾
print(s.endswith("string.")) # 输出: True
# 检查是否以 "Hello" 结尾(从第 7 个字符开始)
print(s.endswith("Hello", start=7)) # 输出: False,因为从第 7 个字符开始,"Hello" 显然不是后缀
# 检查是否以 "world!" 结尾(从第 1 个字符到第 12 个字符)
print(s.endswith("world!", start=7, end=13)) # 输出: True,因为在这个范围内,"world!" 是后缀
# 检查是否以 "world!" 结尾(从第 1 个字符到第 11 个字符)
print(s.endswith("world!", start=7, end=12)) # 输出: False,因为在这个范围内,"world!" 不是后缀(因为包含了 ' ')
1、s.endswith("string."):检查整个字符串 s 是否以 "string." 结尾,结果是 True
2、s.endswith("Hello", start=7):从索引 7 开始检查,字符串的剩余部分不是 "Hello",所以结果是 False
3、s.endswith("world!", start=7, end=13):从索引 7 到索引 13(不包括 13)的范围内检查,这个范围内的字符串是 "world!",所以结果是 True
4、s.endswith("world!", start=7, end=12):从索引 7 到索引 12(不包括 12)的范围内检查,这个范围内的字符串是 "world! "(注意有一个空格),所以结果是 False
2.3 isupper()
isupper():检查字符中所有的字母是否都为大写,是的话就返回True
eg:
# 示例字符串
s1 = "HELLO WORLD"
s2 = "Hello World"
s3 = "HELLO123"
s4 = ""
s5 = "123456"
s6 = "NO LOWERCASE LETTERS"
# 检查是否所有字母都是大写
print(s1.isupper()) # 输出: True,因为所有字母都是大写
print(s2.isupper()) # 输出: False,因为不是所有字母都是大写
print(s3.isupper()) # 输出: True,尽管包含数字,但所有字母都是大写
print(s4.isupper()) # 输出: False,因为字符串为空
print(s5.isupper()) # 输出: False,因为字符串不包含任何字母
print(s6.isupper()) # 输出: True,因为所有字母都是大写
# 注意:如果字符串中包含非字母字符(如数字或标点符号),它们不会影响 isupper() 的结果,
# 只要所有字母字符都是大写,并且字符串至少包含一个字母字符,isupper() 就会返回 True。
3. 修改
3.1 replace()
replace():替换
replace(旧内容,新内容,替换次数)
注意:替换次数可以省略,默认全部替换
eg:
name = '好好学习,天天向上'
print(name.replace("天",'时')) # 好好学习,时时向上
print(name.replace("天",'时',1)) # 好好学习,时天向上
3.2 split()
split():指定分隔符来切字符串
eg:
st = 'hello, python'
print(st.split(',')) # ['hello’,'python']--以列表的形式返回
# 如果字符串中不包含分割内容,就不进行分割,会作为一个整体
print(st.split('a')) # ['hello, python']
print(st.split('o')) # ['hell', ', pyth', 'n']
print(st.split('o',1)) # ['hell', ', python'] --指定只分割一次
3.3 capitalize()
capitalize():第一个字符大写,其他都小写
eg:
st='bingBing'
print(st.capitalize()) # 输出结果:Bingbing
3.4 lower()
lower():大写字母转为小写
eg:
st='bIngBinG'
print(st.lower()) # 输出结果:bingbing
3.5 upper()
upper(): 小写字母转为大写
eg:
st ='bIngBinG'
print (st.upper ()) # 输出结果:BINGBING
作者:糊涂君-Q