目录
九大内置函数
序号 | 函数名 | 功能 |
1 | len() | len()函数求出字符串内元素的个数 |
2 | max() | max()函数会返回字符串内在字典中最大的元素 |
3 | min() | min()函数会返回字符串内在字典中最小的元素 |
4 | list() | list()函数让字符串转换成列表 |
5 | tuple() | tuple()函数让字符串转换成元组 |
6 | str() | str()函数对字符串本身没有用处 |
7 | sorted() | sorted()函数让字符串元素进行排序 |
8 | reversed() | reversed()函数让字符串元素反转 |
9 | enumerate() | enumerate()函数让字符串的索引和元素合成元组 |
# 九大内置函数
str1 = "大概火车"
print(len(str1)) # len()函数求出字符串内元素的个数
print(max(str1)) # max()函数会返回字符串内在字典中最大的元素
print(min(str1)) # min()函数会返回字符串内在字典中最小的元素
# print(sum(str1)) # 无法使用
print(list(str1)) # list()函数让字符串转换成列表
print(tuple(str1)) # tuple()函数让字符串转换成元组
print(str(str1)) # str()函数对字符串本身没有用处
print(sorted(str1)) # sorted()函数让字符串元素进行排序
print(list(reversed(str1))) # reversed()函数让字符串元素反转
print(list(enumerate(set1))) # enumerate()函数让字符串的索引和元素合成元组
字符串的大小写转换
共九种函数,格式是:str.函数名称() 注意:一定要加括号!!!
序号 | 函数 | 功能 |
1 | str.title() | 让字符串的每个单词首字母大写,其他字母都小写 |
2 | str.istitle() | 判断该字符串是否每个单词首字母都大写,其他字母都小写 |
3 | str.capitalize() | 让字符串第一个单词的首字母大写,其他字母小写(最常用) |
4 | str.casefold() | 让字符串的所有字母都小写(支持多种不同的语言) |
5 | str.upper() | 让字符串中的所有字母都大写 |
6 | str.isupper() | 判断该字符串是否每个单词都大写 |
7 | str.lower() | 让字符串中的所有字母都小写(只支持ASCELLA表中的字符) |
8 | str.islower() | 判断该字符串是否每个单词都小写 |
9 | str.swapcase() | 让字符串中的所有字母,大写转换为小写,小写转换为大写 |
# 字符串的转换
x = "I love China" # 例子
print(x.title()) # 让字符串的每个单词首字母大写,其他字母都小写
"结果:I Love China"
print(x.istitle()) # 判断该字符串是否每个单词都大写,其他字母都小写
"结果:False"
print(x.capitalize()) # 让字符串首字母大写,其他字母小写(最常用)
"结果:I love china"
print(x.casefold()) # 让字符串的所有字母都小写(支持多种不同的语言)
"结果:i love china"
print(x.upper()) # 让字符串中的所有字母都大写
"结果:I LOVE CHINA"
print(x.isupper()) # 判断该字符串是否每个单词都大写
"结果:False"
print(x.lower()) # 让字符串中的所有字母都小写(只支持ASCELLA表中的字符)
"结果:i love china"
print(x.islower()) # 判断该字符串是否每个单词都小写
"结果:False"
print(x.swapcase()) # 让字符串中的所有字母,大写转换为小写,小写转换为大写
"结果:i LOVE cHINA"
字符串的查找
共9种函数 格式是:str.函数名()
序号 | 函数 | 说明 | 功能 |
1 | str.count(sub_string, start, end) | sub_string:要统计的字符(必填) | 统计字符串中某字符出现的次数,返回值为int类型 |
start:int 类型 开始搜索的位置(非必填) | |||
end:int 类型 结束搜索的位置(非必填) | |||
2 | str.find() | 无 | 从左往右找第一个字符,返回下标。如果找不到,报错 |
3 | str.rfind() | 无 | 从右往左找第一个字符,返回下标 |
4 | str.index() | 无 | 从左往右找第一个字符,返回下标.如果找不到,返回-1 |
5 | str,rindex() | 无 | 从右往左找第一个字符,返回下标 |
6 | str.startswitch() | 无 | 判断字符串的第一个字符是不是该字符,返回bool值 |
7 | str.endswith() | 无 | 判断字符串的最后一个字符是不是该字符,返回bool值 |
# 字符串的查找
y = "上海自来水来自海上" # 例子
print(y.count("海")) # 统计"海"在字符串中出现的次数
"结果:2"
print(y.count("海", 0, 5)) # 统计"海"在第一个字符到第四个字符出现的次数
"结果:1"
print(y.find("海")) # 从左往右找第一个"海",返回下标
"结果:1"
print(y.rfind("海")) # 从右往左找第一个"海",返回下标
"结果:7"
print(y.index("海")) # 从左往右找第一个"海",返回下标
"结果:1"
print(y.rindex("海")) # 从右往左找第一个"海",返回下标
"结果:7"
print(y.find("郑")) # find当字符在字符串中找不到的时候,会返回 -1
"结果:-1"
print(y.index("郑")) # index当字符在字符串中找不到的时候,会报错
"结果:报错"
print(y.startswith("上")) # 判断字符串的第一个字符是不是"上"
"结果:True"
print(y.startswith(("上", "下"))) # 当参数是元组的时候,只要有一个元素判断正确,返回就正确
"结果:True"
print(y.endswith("上")) # 判断字符串的最后一个字符是不是"上"
"结果:True"
print(y.endswith(("上", "下"))) # 当参数是元组的时候,只要有一个元素判断正确,返回就正确
"结果:True"
字符串的对齐
共4种函数(还有一个可以替代,这里就不写出来) 格式:str.函数名()
序号 | 函数 | 说明 | 功能 |
1 | str.center(width, fillchar) | width:int类型 字符串的宽度(必填) fillchar:str类型 填充空格字符串(非必填) | 居中对齐 |
2 | str.ljust(width, fillchar) | 同上 | 左对齐 |
3 | str.rjust(width, fillchar) | 同上 | 右对齐 |
# 字符串的对齐
z = "肥龙飞天"
print(z.center(14)) # 居中对齐,括号内参数:第一个是该字符串的总长度,第二个是填充空白位置(写字符串或者不填)
"结果: 肥龙飞天 "
print(z.ljust(14, "0")) # 左对齐
"结果:肥龙飞天0000000000"
print(z.rjust(14, "0")) # 右对齐
"结果:0000000000肥龙飞天"
字符串的分割与连接
共五个
序号 | 函数名 | 说明 | 功能 |
分割字符串 | |||
1 | str.strip() | 无 | 去除字符串前后的空格与换行符,不能去除字符串中间的 |
2 | str.split(str="",num= [n]) | str:表示指定以""来分割 | 去除字符串的指定的东西,返回值是一个表格 |
num:表示要分割几次(默认是字符串中该字符出现的次数) | |||
n:表示要取出第几个元素 | |||
3 | str.splitlines(bool) | True:表示显示换行符 | 去除字符串的换行符 |
False:表示不显示换行符(默认) | |||
连接字符串 | |||
4 | + | 无 | 把两个字符串拼接起来 |
5 | "".join(str) | str:表示参数的数据类型必须属于字符串,或者是字符串序列 | 把数据容器中的所有元素挨个与""里面的内容添加 |
# 字符串的分割与连接
# 字符串的分割
s1 = " 肥龙 胖田 "
s2 = "肥龙, 胖田"
s3 = "肥龙\r胖田"
print(s1) # 没有分割的时候
"结果: 肥龙 胖田 "
print(s2)
"结果:肥龙, 胖田"
print(s3)
"结果:胖田"
print(s1.strip()) # 分割字符串的空格
"结果:肥龙 胖田"
print(s2.split(",")) # 分割字符串的逗号
"结果:['肥龙', ' 胖田']"
print(s3.splitlines()) # 分割字符串的回车符。参数True保留回车符,参数False不保留回车符。默认参数为False。返回值是列表。
"结果:['肥龙', '胖田']"
print(s3.splitlines(True)) # 保留回车符
"结果:['肥龙\r', '胖田']"
# 字符串的连接
print("1" + s1) # 使用"+"来连接字符串
"结果:1 肥龙 胖田 "
print("1".join(s2)) # 使用join函数来连接(面对字符串会每个字符都拼接)
"结果:肥1龙1,1 1胖1田"
print("1".join(["肥龙", "胖田"])) # 面对列表、元组、集合这种数据类型时,会每个元素都拼接(如果只是把两个字符串连接,那前面就定义一个空字符串就可以)
"结果:肥龙1胖田"
print("1".join({"我":"肥龙", "你":"胖田"})) # 面对字典这种数据容器时,只会拼接key,不会拼接value
"结果:我1你"
字符串的格式化
(1)占位符(format函数)
序号 | 传参方式 | 格式 |
1 | 默认传参 | "{}".format(xxx) |
2 | 下标传参 | "{0}".format(xxx) |
3 | 关键字传参 | "{0}".format(0=xxx) |
4 | 列表传参 | "{}".format(*[xxx]) |
5 | 元组传参 | "{}".format(*()) |
6 | 集合传参 | "{}".format(*{}) |
7 | 字典传参 | "{}".format(*{"":""}) |
# 占位符
print("今年是{}年{}月{}号".format(2022, 9, 10)) # 默认从左到右填写
"结果:今年是2022年9月10号"
print("今年是{2}年{1}月{0}号".format(2022, 9, 10)) # 按照对应下标填写
"结果:今年是10年9月2022号"
print("今年是{year}年{month}月{data}号".format(year=2022, month=9, data=10)) # 按照关键字填写
"结果:今年是2022年9月10号"
print("今年是{}年{}月{}号".format(*[2022, 9, 10])) # 列表传参(前面要加*)
"结果:今年是2022年9月10号"
print("今年是{}年{}月{}号".format(*(2022, 9, 10))) # 元组传参
"结果:今年是2022年9月10号"
print("今年是{}年{}月{}号".format(*{2022, 9, 10})) # 集合传参
"结果:今年是2022年9月10号"
print("今年是{}年{}月{}号".format(*{"0": "2022", "1": "9", "2": "10"})) # 字典传参(只能传key)
"结果:今年是0年1月2号"
(2)对齐
格式:"{:}".format()
序号 | 格式 | 说明 | 功能 |
1 | "{:x>y}".format() | >:左对齐 | 让字符在规定空间中左对齐 |
x表示空格处用什么填补(可省略) | |||
y表示该字符占几格(最好要填) | |||
2 | "{:x<y}".format() | <:右对齐 | 让字符在规定空间中右边对齐 |
x表示空格处用什么填补(可省略) | |||
y表示该字符占几格(最好要填) | |||
3 | "{:x^y}".format() | ^:居中对齐 | 让字符在规定空间中居中对齐 |
x表示空格处用什么填补(可省略) | |||
y表示该字符占几格(最好要填) |
# 对齐
print("{:>8}".format(5)) # 表示8个字符空间中,向左对齐
"结果: 5"
print("{:->8}".format(5)) # 表示8个字符空间中,向右对齐,并且空格用"-"来补充
"结果:-------5"
print("{:<8}".format(5)) # 表示8个字符空间中,向右对齐
"结果:5 "
print("{:-<8}".format(5)) # 表示8个字符空间中,向左对齐,并且空格用"-"来补充
"结果:5-------"
print("{:^8}".format(5)) # 表示8个字符空间中,居中对齐
"结果: 5 "
print("{:-^8}".format(5)) # 表示8个字符空间中,居中对齐,并且空格用"-"来补充
"结果:---5----"
(3)千位分隔符
格式:"{:}".format()
序号 | 格式 | 说明 |
1 | "{:,}".format() | 当所填入的数字不足1000的时候,不会出现分隔符 |
# 千位分隔符
print("{:,}".format(10000000)) # 只能使用逗号进行分隔
"结果:10,000,000"
print("{:,}".format(100)) # 当所输入的数字不足一千的时候,分隔符不会出现
"结果:100"
(4)精度确定
格式:"{:}".format()
序号 | 格式 | 说明 |
1 | "{:+/-.xf}".format() | +/-:正号表示保留符号,负号表示不保留符号(默认) x:表示要保留几位小数 f:表示十进制的浮点数,也就是小数 |
# 精度确定
print("{:.2f}".format(1000.0000)) # 保留小数点后两位
"结果:1000.00"
print("{:+.2f}".format(1000.0000)) # 带符号保留小数点后两位
"结果:+1000.00"
print("{:.2}".format("1000.0000")) # 保留字符串的前两个
"结果:10"
(5)进制转换
序号 | 格式 | 说明 | 功能 |
1 | "{:#b}".format() | #:表示要不要加进制符(可不填) | 转成二进制 |
b:表示二进制 | |||
2 | "{:#o}".format() | #:表示要不要加进制符(可不填) | 转成八进制 |
o:表示八进制 | |||
3 | "{:#d}".format() | #:表示要不要加进制符(可不填) | 转成十进制 |
d:表示十进制 | |||
4 | "{:#x}".format() | #:表示要不要加进制符(可不填) | 转成十六进制 |
x:表示十六进制 |
# 进制转换
print("{:b}".format(88)) # 输出88的2进制
"结果:1011000"
print("{:#b}".format(88)) # 输出88的2进制,且以0b开头
"结果:0b1011000"
print("{:o}".format(88)) # 输出88的8进制
"结果:130"
print("{:#o}".format(88)) # 输出88的8进制,且以0o开头
"结果:0o130"
print("{:d}".format(88)) # 输出88的10进制
"结果:130"
print("{:#d}".format(88)) # 输出88的10进制
"结果:88"
print("{:x}".format(88)) # 输出88的16进制
"结果:58"
print("{:#x}".format(88)) # 输出88的16进制,以0x开头
"结果:0x58"
(6)浮点数
序号 | 格式 | 说明 | 功能 |
1 | "{:e/E}".format() | e:表示科学计数法 | 以科学计数法的形式输出浮点数 |
2 | "{:f}".format() | f:表示浮点数 | 以定点表示法的形式输出浮点数 |
3 | "{:g}".format() | g:表示科学计数法和顶点表示法 | 大数以科学计数法输出,小数以定点表示法输出 |
4 | "{:%}".format() | %:表示百分比形式 | 以百分比的形式输出浮点数 |
# 浮点数输出
print("{:e}".format(3.1415966)) # 以科学计数法的形式输出浮点数,默认精度是6
"结果:3.141597e+00"
print("{:E}".format(3.1415926)) # 同上
"结果:3.141593E+00"
print("{:f}".format(3.1415926)) # 以定点表示法的形式输出浮点数,默认精度是6
"结果:3.141593"
print("{:g}".format(31415926)) # 大数以科学计数法的形式输出
"结果:3.14159e+07"
print("{:g}".format(3.1415926)) # 小数以顶点表示法的形式输出
"结果:3.14159"
print("{:%}".format(3.1415926)) # 以定点表示法输出百分号形式
"结果:314.159260%"
f字符串
格式:f"{变量}"
序号 | 格式 | 功能 |
1 | f"{变量}" | 快速引入变量 |
# f字符串
a = "肥龙"
print(f"我叫{a}") # 可以快速引入变量
"结果:我叫肥龙"