字符串函数操作
加 * 表示内建函数,可以直接使用
一、查找计算
1. len()*
name = "我爱python"
print(len(name))
输出8
2. find()
从左往右进行查找
name = "我爱pythonpy"
# print(len(name))
num1 = name.find("p")#查找第一个p的索引位置
num2 = name.find("p",3)#start=3:从索引3开始找p的索引位置
num3 = name.find("p",7,9)#start=7,stop=9.从索引3开始至9结束找p的索引位置
print(num1)
print(num2)
print(num3)
输出:
3. rfind()
与find() 的区别在于:从右往左进行查找
name = "我爱pythonpy"
# print(len(name))
num1 = name.rfind("p")#查找第一个p的索引位置
num2 = name.rfind("p",-3)#start=3:从索引3开始找p的索引位置
num3 = name.rfind("p",-9,-7)#start=7,stop=9.从索引3开始至9结束找p的索引位置
print(num1)
print(num2)
print(num3)
输出:
4. index()
与find() 一样,区别在于,find() 没有查找到返回-1,而index() 没有查找到则报错。
name = "我爱pythonpy"
# print(len(name))
# num1 = name.rfind("p")#查找第一个p的索引位置
num2 = name.find("p",9)#start=3:从索引3开始找p的索引位置
# num3 = name.index("p",9)#start=7,stop=9.从索引3开始至9结束找p的索引位置
# print(num1)
print(num2)
# print(num3)
输出:-1
name = "我爱pythonpy"
# print(len(name))
# num1 = name.rfind("p")#查找第一个p的索引位置
num2 = name.find("p",9)#start=3:从索引3开始找p的索引位置
num3 = name.index("p",9)#start=7,stop=9.从索引3开始至9结束找p的索引位置
# print(num1)
print(num2)
print(num3)
输出:
可以理解为一个是查找,一个是获取:
没找到就说-1,告诉你没找到(没找到也是一种结果)
获取不到就报错,告诉你没有结果
5. rindex()
功能同index()
从右往左进行查找
name = "我爱pythonpy"
print(name.index('p'))
print(name.rindex('p'))
输出:
6. count()
- 作用:计算某个子字符串出现个数
- 语法:count(sub, start=0, end=len(str))
sub:需要检索的字符串
start:检索的起始位置,默认0,可省略
end:检索的结束位置,默认len(str),可省略 - 返回值:子字符串出现个数,整型
name = "我爱pythonpy"
print(name.count("p"))
print(name.count("th"))
输出:
二、转换类操作
1. replace()
- 作用:替换旧字符串
- 语法:replace(old, new[, count])
count:替换的个数,默认全替,可省略 - 返回值:替换后结果的字符串
- 注:不会修改源字符串本身
name = "我爱pythonpy"
print(name.replace("我爱","我们爱"))
print(name)
输出:
2. capitalize()
- 作用:将字符串首字母变为大写
- 注:不会修改源字符串本身
3. title()
- 作用:将字符串每个单词的首字母大写
(怎么区别单词,凡是两个字母中间有分隔符的)
name = "wo ai python-yy%qq"
print(name.capitalize())
print(name.title())
输出:
注意:数字开头不区分大小写
4. lower()
- 作用:将字符串每个字符都变为小写
5. upper()
- 作用:将字符串每个字符都变为大写
三、填充压缩
将字符串的长度变成需要的
1. ljust()
- 作用:根据指定字符,将原字符串填充够指定长度
l:表示字符串靠左 - 语法:ljust(width, fillchar)
width:指定结果字符串长度
fillchar:原字符串长度<指定长度时,进行填充的字符,只能是一个字符 - 注:不会修改原字符串,只有当原字符串长度<指定长度时生效
name = "py"
print(name.ljust(6,"t"))
print(name.ljust(1,"t"))
输出:
2. rjust()
原字符串靠右
3. center()
原字符串居中
name = "py"
print(name.ljust(6,"t"))
print(name.rjust(6,"t"))
print(name.center(6,"t"))
输出:
4. lstrip()
- 作用:移除所有原字符串中指定字符(默认空白字符)
(空格,\n,\t 都是空白符)
l:仅仅移除左侧指定字符 - 语法:lstrip(chars)
5. rstrip()
仅仅移除右侧
name = " wo ai python "
name1 = "wwwoooo ai python "
print("|"+ name + "|")
print("|" + name.lstrip() + "|")
print("|" + name.rstrip() + "|")
print("|" + name1.lstrip("wo") + "|")#此时字符串最左边必须以w开头,否则不能移除
print("|" + name1.lstrip("o") + "|")
输出:
四、分割拼接
1. split()
- 作用:将一个大字符串分割成几个小字符串
- 语法:split(sep, maxsplit)
sep:分隔符
maxsplit:最大的分割次数,可省略,默认有多少分割多少 - 返回值:分割后的子字符串,组成的列表,list列表类型
- 注:不会修改原字符串
info = "miya-160-python-0558-1234567"
print(info.split("-",3))
print(info)
输出:
2. partition()
- 作用:根据指定的分隔符,返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
- 语法:partition(sep)
- 返回值:tuple元组类型
找到分隔符:返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
没找到分隔符:返回(原字符串,“”,“”) - 注:不会修改原字符串;从左侧开始查找分隔符
3. rpartition()
从右侧开始查找分隔符
info = "miya-160-python-0558-1234567"
print(info.partition("-"))#左侧开始查找
print(info.rpartition("-"))#右侧
print(info.partition("#"))#查找不到
print(info.rpartition("#"))
print(info)
输出:
4. splitlines()
- 作用:按照换行符(\n, \t),将字符串拆成多个元素,保存到列表中
- 语法:splitlines(keepends)
keepends:是否保留换行符;bool类型,默认False - 返回值:被换行符分割的多个字符串,作为元素组成的列表;list类型
- 注:不会修改原字符串
name = "wo \n shi \n miya"
print(name.splitlines())
print(name.splitlines(True))
print(name.splitlines(False))
print(name)
输出:
5. join()
- 作用:根据指定字符串,将给定的可迭代对象,进行拼接,得到拼接后的字符串
- 语法:“xxx”.join(iterable)
iterable:可迭代对象(凡是可使用for循环进行遍历的都叫做可迭代对象) - 返回值:拼接好的新字符串
name = ['wo','shi','miya']
print('-'.join(name))
输出:
五、判定操作
判定是否是数字、空白等
1. isalpha()
-
作用:判定字符串中是否所有的字符都是字母(字母不包含数字、特殊符号、标点符号等等,且字符串至少有一个字符)
-
语法:字符串.isalpha()
-
返回值:是否全是字母;bool类型
name = "miYA"
name1 = "mi/YA"
name2 = " "
print(name.isalpha())
print(name1.isalpha())
print(name2.isalpha())
输出:
2. isdigit()
- 作用:判定字符串中是否所有的字符都是数字
name = "123"
name1 = "1/12"
name2 = " "
print(name.isdigit())
print(name1.isdigit())
print(name2.isdigit())
输出:
3. isalnum()
- 作用:判定字符串中是否所有的字符都是数字或者字母
name = "2345"
name1 = "miya"
name2 = "miya2345"
name3 = ""
print(name.isalnum())
print(name1.isalnum())
print(name2.isalnum())
print(name3.isalnum())
输出:
4. isspace()
- 作用:判定字符串中是否所有的字符都是空白符
(空白符:包括空格,缩进,换行等不可见转义符) - 注:至少有一个字符,没有字符返回False
name = "\n"
name1 = "miya\n"
name3 = ""
print(name.isspace())
print(name1.isspace())
print(name3.isspace())
输出:
5. startswith()
- 作用:判定一个字符串是否以某个前缀开头
- 语法:startswith(prefix, start=0, end=len(str))
prefix:需要判定的前缀字符串
[start, end):判定区间
name = "2022-12-07: 某报告"
print(name.startswith("2022"))
print(name.startswith("2022",2))
print(name.startswith("22",2))
输出:
6. endswith()
- 作用:判定一个字符串是否以某个后缀结束
name = "2022-12-07: 某报告.xls"
print(name.endswith(".xls"))
输出:
六、补充
1. in()
- 作用:判定一个字符串,是否被另一个字符串包含
2. not in()
- 作用:判定一个字符串,是否不被另一个字符串包含
name = "wo shi miya2345"
print("mi" in name)
print("mi" not in name)
输出: