【python语法】字符串常用函数
基本函数
dir()
dir()函数的作用是将参数数据类型包含的所有函数返回到一个列表中,这个列表是可遍历的;可以直接输出,也可以循环输出参数类型的所有内嵌函数
直接输出字符串数据类型带有的所有函数:
print(dir(str))
查看字符串类型的所有内嵌函数并查看帮助说明
lst = dir(str)
for i in lst:
print(i)
print(help("str." + i)) # 对help函数的参数进行拼接,形成:str.func(函数调用的格式)
str.capitalize()
str.capitalize()函数将字符串的首字母大写(并不会改变原来字符串的内容)
mystr = "hello django"
print(mystr.capitalize())
print(mystr)
str.center()
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
使用方法:
str.center(num,"x")
- num ; 填充符号的个数
- x : 使用的填充字符(修改默认的空格)
案例:对字符串进行“金字塔输出”
mystr = "8848" # 目标字符串
for i in range(6, 60, 2): # 6:目标字符串的长度 4 第一层是在目标字符串左右各添加一个填充字符(4+2=6)、60:一共有60层;2:每增加一层,添加两个占位符(占位符增长的步长为2)
for j in range((60 - i) // 2, 0, -1): # 控制其中一半(左边或者右边)空格的个数,从(总数 - i) //2 递减
print(" ", end="")
print(mystr.center(i, "-"))
str.count()
判断字符串在调用函数的字符串对象中出现的次数,用法
str.count("str1",start,end)
- str1 : 判断字符串str中是否有str1存在;如果有返回str1的个数,如果没有返回 0
- start:起始下标,从字符串str的下标为start的元素开始判断
- end:结束下标,到字符串str的下标为end的元素判断结束
- start 和 end 通过下标限制了判断的区间
mystr = "hello django , and hello django3"
print(mystr.count("django"))
print(mystr.count("django",7)) # 判断参数中字符串在调用函数的字符串对象中出现的次数,从下标为 7 的字符开始,到最后一个字符结束
print(mystr.count("django",10,15)) # 判断参数中字符串在调用函数的字符串对象中出现的次数,从下标为 10 的字符开始,到第 15 个字符结束
编码与解码
str.bytes()
作用:将参数中的字符串根据对应的编码规则转换成二进制编码类型
常见的编码方式有UTF-8和gbk两种
utf-8两个字符表示汉字,一个字符汉字结束,3个字符||相当于一个汉字占据 3 个字符;GBK两个字符表示汉字,没有结束||相当于一个汉字占据两个字符
用法:
bytes(str,"rules")
将字符串str根据rules类型转化成二进制编码格式
- str : 需要被转换的字符串
- “rules” :编码格式(注意要加上引号)常见的格式:gbk ; utf-8
# utf-8两个字符表示汉字,一个字符汉字结束,3个字符||相当于一个汉字占据 3 个字符
print(bytes("我","utf-8"))
print(bytes("我的","utf-8"))
print(bytes("我的喔","utf-8"))
#GBK两个字符表示汉字,没有结束||相当于一个汉字占据两个字符
print(bytes("我","gbk"))
print(bytes("我的","gbk"))
print(bytes("我的喔","gbk"))
str.encode()
常用的字符串转换成二进制的编码方法
以encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’;具体的使用方法如下:
str.encode(encoding="rules",errors="opts")
- rules : 常见的编码方式(必填)
- opts : 错误处理的方法:常见的选项有:strict:严格编码;出现转义错误会直接给出ValueError ; ignore:忽略编码过程中出现的错误,进行强制转义
其中参数名称可以省略不写(encoding= 、errors=可以省略)直接写双引号内容
print("你好中国".encode('gbk'))
print("你好中国".encode('utf-8'))
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode('utf-8'))
print(type("你好中国".encode('gbk'))) # 编码之后对应的类型变成了 二进制
print(type(b'\xe6\x88\x91\xe7\x9a\x84\xe5\x96\x94'.decode('utf8'))) # 解码之后对应的类型变成了字符串
str.decode()
常用的二进制编码解码成字符串的方法
具体使用方法和参数与encode相同,decode有解码作用
str.decode("rules","opts")
不同的编码格式之间不能呼唤否则会导致编码解析错误的问题
通常:写入文本需要使用encode:写入二进制;读取文本:decode将二进制内容转化为文本
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode('gbk','ignore'))
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode(encoding='gbk',errors='strict')) # 会出现解析错误异常
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode('utf-8','strict')) # 如果编码方式正确,就不会出现异常
字符串填充函数
str.join()
在join的参数字符串的每两个字符之间,插入调用join()函数的参数字符串
"signals".join("str1")
- signals: 对应的符号,比如:“-”
- str1:中间待插入对应符号的字符串
print("--".join("abcdefg"))
# 输出结果:a--b--c--d--e--f--g
在任意两个字符之间填充 “–”符号
str.rjust() || str.ljust()
str.rjust() :在调用函数的字符串左侧填充函数内第二个参数的内容(一般是符号);str.ljust():在调用函数的字符串右侧填充函数内第二个参数的内容
str.rjust(i,"signal")||str.ljust(i,"signal")
- str : 调用函数的字符串
- i : 填充符号的个数
- signal :在str字符串左(右)填充的符号
for i in range(5, 30): # 第一个参数一定要比中间的字符串长度大(否则没地方填充)
print("8848".rjust(i, "-")) # rjust:在第一个参数字符串的左侧进行填充(第二个参数的字符) i:填充的个数
其他函数
str.endswith()
str.endswith()函数,判断字符串是否以参数中的字符(字符串结束);如果是以参数中的字符串作为结束:返回true否则返回false;用法如下:
file = str(input("输入文件名称"))
print(file.endswith('.txt')) # 用于检测输入的文件名是否以“.txt”结束
str.expandtabs()
将字符串中的 \t 转换为空格,默认宽度为 8 可以通过参数tabsize设置:用法如下:
str.expandtabs(tabsize=n)
- n : 将 \t 转换之后形成的间距,默认为8可以修改
mystr = "1\t2\t3"
print(mystr.expandtabs(tabsize=7)) # 将一个\t转换成了 7 个字符空位的空格
str.find() || str.rfind()
查找字符串的两种方法||存在返回下标,不存在返回-1;其中find函数从左向右正向查找;rfind方法从右向左反向查找
用法(以find为例):
str.find("str1",start,end)
- str1:需要查找的字符串
- start:从下标为start的字符开始查找
- end:到下标为end的字符查找结束
- start 和 end 无论是在 find 函数 还是 rfind 函数中,都是从左向右正向划定查找区间的
mystr = "孙播 陈慧 申凌瑞 陈慧 李佳奇 吴东 牛兴杰 "
print(mystr.find("陈慧")) # find返回第一个目标字符串的下标,从头部开始查找
print(mystr.rfind("陈慧")) # rfind返回最后一个目标字符串的下标,从尾部开始查找
print(mystr.rfind("陈慧", 6)) # 查找 陈慧 字符串,从下标为 6 的字符开始查找(rfind 与 find 查找字符下标的两个参数意义相同:第二个:起始下标;第三个:结束下标)
print(mystr.rfind("陈慧", 6, 11))
print(mystr.find("陈慧", 4)) # 第一个参数要查找字符串,第二个查找字符串的起始下标,第三个查找对应字符串的结束下标
print(mystr.find("李佳奇", 4, 9))
str.index() || str.rindex()
判断字符是否存在,如果字符存在则返回第一个字符的下标,如果不存在报ValueError异常,其他的用法与find大致相同:
str.index("str1",start,end)
- str1:需要查找的字符串
- start:从下标为start的字符开始查找
- end:到下标为end的字符查找结束
- start 和 end 无论是在 find 函数 还是 rfind 函数中,都是从左向右正向划定查找区间的
space空格算作一个字符
mystr="孙播 陈慧 申凌瑞 陈慧 李佳奇 吴东 牛兴杰 "
print(mystr.index("陈慧")) #index查找字符串是否存在,存在返回第一个目标字符串下标,不存在,异常错误
print(mystr.rindex("陈慧")) #rindex查找,返回最后一个目标元素的下标
print(mystr.index("陈慧",7,10)) # (valueEror错误)从第二个人名(陈慧|目标字符串)之前开始查找,在第四个人名(陈慧)之前结束
str.isXXX()
字符串的is系列函数,常用于判断参数字符串是否符合对应的条件,返回一个布尔值,符合(True)不符合(False)
print("我456casca".isalnum()) # 判断是否由纯字母和数字组成||汉字算字母
print("416113135153".isdigit()) # 判断是否是纯数字
print("scasccsac我".isalpha()) # 判断是否是纯字母:汉字算一个字母
print("ascas我".islower()) # 判断是否都是小写字母(汉字既是小写字母也是大写字母)
print("ASCASC".isupper()) # 判断是否都是小写字母(汉字既是小写字母也是大写字母)
print(" ".isspace()) # 判断是否都是由空格或者tab组成
print("Ahhca".istitle()) # 判断是否第一个字母大写其他字母都小写
print("0x12".isdecimal()) # 判断是否是十进制数字
str.upper() || str.lower()
控制字符串的大小写(汉字既是大写又是小写字母)upper函数将字符串中的所有英文字母转换为大写;反之lower函数将字符串中的所有英文字母转换为小写
用法:
str.upper() || str.lower()
print("ascscac".upper()) # 将字符串全部转换成大写
print("ascs我cac".upper()) # 汉字既是大写又是小写
print("ALISNCLASCN".lower()) # 将字符串全部转换成小写
max() || min()
max()函数的参数是字符串时,作用是取出字符串中ASCII码最大的字符;min()函数的参数时字符串时,作用是取出字符串中ASCII码最小的字符
print(max("chaouso"))
print(min("iiscacs"))
str.replace()
字符串替换,将调用函数的字符串目标内容,替换为replace()函数的参数内容
str.replace("target","replacement",i)
- target : 需要被替换的目标字符串
- replacement :替换成的字符串
- i : 字符串替换的次数(可以省略,默认替换全部的target)
mystr = "hello python , hello python"
print(mystr.replace("python", "java")) # 第一个参数:目标字符串|第二个参数:要替换成的字符串(将目标替换成这个)
print(mystr.replace("python", "java", 1)) # 第三个参数:限制替换最多次数(最多替换1次)
str.strip()
strip():去除字符串左右存在的空格
str.strip()
其中包括了:
str.rstrip() || str.lstrip()
分别代表了去除字符串右侧空格和去除字符串左侧空格,以上三种方法对字符串内部空格无效
mystr = " 12 3 456 "
print(mystr.strip()) # 去除字符串左右空格
print(mystr.rstrip()) # 去除字符串右侧空格
print(mystr.lstrip()) # 去除字符串左侧空格
# 以上三种方法均对字符串中间的空格毫无影响
本文地址:https://blog.csdn.net/weixin_45895022/article/details/107895621