【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())  # 去除字符串左侧空格
# 以上三种方法均对字符串中间的空格毫无影响

str.maketrans()||str.translate()

作用是通过创建翻译表和执行翻译的操作将字符串中的字符替换成其他字符;用法:创建翻译表,用两个字符串表示在原字符串中查询的字符和在替换后字符串中的新字符(字符串长度要相等,每个字符需要一一对应(也就是将intab中的字符逐个替换成为outtab中的字符))

常用函数maketrans(str1,str2)用来生成翻译表translate(rules)用来按照翻译表规则翻译对应的字符串

str.maketrans(str1,str2)
targetstr.translate(rules)
  • str1:需要查找的字符串
  • str2:替换成为的字符串(将查找字符串中的字符替换成为这个字符串中的字符)
  • rules:调用maketrans()函数的规则(翻译表)
# intab = "aeiou"  在原字符串中查询记录的字符
# outtab = "12345"  将查询到的字符替换为这些字符

transtab = str.maketrans("aeiou", "12345")
# transtab = "".maketrans("aeiou", "12345")

targetstr = "This is a demo str"
print(targetstr.translate(transtab))   # 目标字符串调用translate()方法

输出结果:

Th3s 3s 1 d2m4 str
# 所有intab中的字符都被替换成了outtab中的字符(逐个字符替换)
字符串模板

作用是将自定义参数部分($parameter)的内容替换为其他内容

在使用字符串模板之前需要导入对应的模块

from string import Template

常用函数:

Template(targetstr)
substitude(custom parameter)
  • targetstr:使用字符串模板的目标字符串
  • custom parameter:自定义参数取决于字符串模板中 $后的参数
from string import Template

demostr = Template("Hello my name is $name ,I'm learning $language")
print(demostr.substitute(name="martin", language="python"))  # 使用键值对形式作为参数
dict1 = {
     "name": "jason", "language": "java"}
print(demostr.substitute(dict1))  # 使用字典作为参数
demostr2 = Template("This book $name costs $dollars $$")  # $$ 表示 $ 
print(demostr2.substitute(name="python语言程序设计",dollars="20"))

substitute函数的参数类型可以使用键值对形式,也可以直接使用字典

你可能感兴趣的:(python碎碎念,python常用函数,python,字符串)