字符串的常用函数API(Python 的字符串常用内建函数)(详细版)
capitalize()、upper()、isupper()、lower()、islower()、swapcase()、title()、istitle()
1.capitalize():将字符串的第一个字符转换为大写
str="alibaba is very nice"
str1=str.capitalize() # 首字母大写,不会改变原值,而是返回一个新值
print(str) # alibaba is very nice
print(str1) # Alibaba is very nice
2.upper():转换字符串中的小写字母为大写
3.isupper():用于检测字符串中的所有字符是否都是大写字母,并且都是大写,则返回 True,否则返回 False
str = "aBc"
str1 = str.upper() # 字母全部大写 变量名调用函数
print(str1) # ABC
print(str.isupper()) #False
print(str1.isupper()) #True
4.lower():转换字符串中所有大写字符为小写.
5.islower():用于检测字符串中的所有字符是否都是小写字母,字符都是小写,则返回 True,否则返回 False.
str="aBc"
str1=str.lower() #字母全部小写
print(str1) #abc
str2="ASD"
print(str2.islower()) #False
6.swapcase():将字符串中大写转换为小写,小写转换为大写
str="asCFdd"
result=str.swapcase()
print(result)#AScfDD
7.title():返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写
8.istitle():如果字符串是标题化的(见 title())则返回 True,否则返回 False。
str="my name is jack"
result=str.title()
print(result) #My Name Is Jack
print(result.istitle()) #True
print(str.istitle())# False 判断是不是标题,每个字母首字母大写
len(string)
1.len(string):返回字符串长度
str="文心一言知识增强大语言模型 百度全新一代知识增强大语言模型"
print(len(str)) #29
2.count(str, beg= 0,end=len(string)):返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
str = "文心一言知识增强大语言模型 百度全新一代知识增强大语言模型"
str1=str.count("语言")
print(str1) # 2 str字符串中出现了多少次语言
center(width, fillchar)、ljust(width, fillchar)、rjust(width, fillchar)
1.center(width, fillchar):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
2.ljust(width, fillchar):返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
3.rjust(width, fillchar):返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
str="abc"
str2=str.center(20) #不填参数,默认为空字符串进行填充
print(str2,len(str2)) # abc 20 打印填充后的结果和填充后的长度
str2=str.center(20,"0") #填充字符为0
print(str2,len(str2))# 00000000abc000000000 20
str2=str.center(4,"*")
print(str2,len(str2))# abc* 4 非均匀填充
endswith(suffix, beg=0, end=len(string))
1.endswith(suffix, beg=0, end=len(string)):检查字符串是否以 suffix(后缀) 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 suffix 结束,如果是,返回 True,否则返回 False。
str="c:/user/desck/asdf/sde/1.png"
result=str.endswith(".png") # True 字符串以什么结束,是返回true,反之
print(result)
expandtabs(tabsize=8)
1.expandtabs(tabsize=8):把字符串 string 中的 \t 符号转为空格,tab 符号默认的空格数是 8 。
str="qjan\tskiwjs"
re=str.expandtabs(tabsize=8)
print(re)#qjan skiwjs
find(str, beg=0, end=len(string))、rfind(str, beg=0,end=len(string))、index(str, beg=0, end=len(string))、rindex( str, beg=0, end=len(string))
1.find(str, beg=0, end=len(string)):检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
str="abcdeb"
index=str.find("b")
print(index) #1 打印b的索引 没有b打印-1 有多个b时返回第一个b的下表
#查找下一个b
index=str.find("b",index+1)
print(index) # 5 index+1表示下一次出现搜索词的索引
2.rfind(str, beg=0,end=len(string)):类似于 find()函数,不过是从右边开始查找。
str="abcdafa"
result=str.rfind("a")
print(result)#6 一次性只查找一个
3.index(str, beg=0, end=len(string)):跟find()方法一样,只不过如果str不在字符串中会报一个异常。
4.rindex( str, beg=0, end=len(string))类似于 index(),不过是从右边开始。
str="abc"
i=str.index("b")
print(i) #1
j=str.index("d")
print(j) #报错
isalnum()、isalpha()、isdigit()、isnumeric()、isspace()
1.isalnum():非空字符串 中没有符号 就返回True。
2.isalpha():非空字符串 中没有符号和数字 就返回True。
str="www"
result=str.isalnum()
print(result)#True
str="www?"
result=str.isalnum()
print(result)#False
str="ddd0"
result=str.isalnum()
print(result)#True isalpha()返回false
str="ddds " #有空格也会返回False
result=str.isalnum()
print(result)#False
3.isdigit():如果字符串只包含数字则返回 True 否则返回 False。
4.isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False。
5.isspace():如果字符串中只包含空白(空字符串),则返回 True,否则返回 False。
print(str=="") #False不是空字符串
print(len(str)==0) #False 字符串的长度不为0
print(bool(str))# True 非0的bool型都是true 只有length为0的字符串才会转化为False,有空格就不是空字符串
print(str.isspace()) # True
join(seq)、split(sep="", maxsplit=string.count(str))、splitlines(keepends)
1.join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。
str="abc"
re="-".join(str)#注意这个函数的调用方式
print(re)#a-b-c
2.split(sep="", maxsplit=string.count(str)):以 sep为分隔符截取字符串,如果 maxsplit有指定值,则仅截取 maxsplit+1 个子字符串
str="https://www.baidu.com/s?wd=马爸爸&rsv_spt=1&rsv_iqid=123456&issp=1"
arr=str.split("&")
print(arr) #['https://www.baidu.com/s?wd=马爸爸', 'rsv_spt=1', 'rsv_iqid=123456', 'issp=1']
arr=str.split("?")[1]
print(arr)#wd=马爸爸&rsv_spt=1&rsv_iqid=123456&issp=1
print(arr.split("&"))#['wd=马爸爸', 'rsv_spt=1', 'rsv_iqid=123456', 'issp=1']
print(arr)#wd=马爸爸&rsv_spt=1&rsv_iqid=123456&issp=1
arr=str.split("?")[1].split("&")
print(arr)#['wd=马爸爸', 'rsv_spt=1', 'rsv_iqid=123456', 'issp=1']
3.splitlines(keepends)按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
str="abc\radsd\nsasd\tdsds"
print(str)
result=str.splitlines() #将有换行功能的进行分割
print(result)#['abc', 'adsd', 'sasd\tdsds']
lstrip()、rstrip()、strip(chars)
1.lstrip():截掉字符串左边的空格,\t,\r,\n或指定字符。
2.rstrip():删除字符串末尾的空格\t,\r,\n或指定字符。(同理)
3.strip(chars)在字符串上执行 lstrip()和 rstrip()
str=" 132424"
result=str.lstrip()
print(str)# 132424
print(result)#132424
str="\t132424"
result=str.lstrip()
print(str)# 132424
print(result)#132424
str="132424"
result=str.lstrip("1")
print(str)#132424
print(result)#32424
str="r132424"
result=str.lstrip("r")
print(str)#r132424
print(result)#132424
#截图两边的空格\t,\r,\n或指定字符
str=" 244 "
result=str.lstrip().rstrip()
print(result)#244
maketrans()
1.maketrans():创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
str="abcde"
#两个参数中必须要有一个str中的参数
result=str.maketrans("9","d") # {57: 100} str中的a的键码值和b的键码值进行映射,生成字典
print(result)
max**(str)、min(str)
1.max(str):返回字符串 str 中最大的字母。
2.min(str):返回字符串 str 中最小的字母。
str="accdfdf"
print(max(str))#f
print(min(str))#a
replace(old, new , max)
1.replace(old, new , max):把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
str="文心一言知识增强大语言模型 百度全新一代知识增强大语言模型"
str2=str.replace("语言","智能",1)# 不指定次数就是全部替换
print(str2)#文心一言知识增强大智能模型 百度全新一代知识增强大语言模型
str="文心一言知识增强大语言模型 百度全新一代知识增强大语言模型"
str2=str.replace("语言","**",1)
print(str2)#文心一言知识增强大**模型 百度全新一代知识增强大语言模型
startswith(substr, beg=0,end=len(string))
1.startswith(substr, beg=0,end=len(string)):检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
str="0817-349363828217"
result=str.startswith("0817") #字符串以什么开头,是返回true,反之
print(result)#True
zfill (width)
1.zfill (width) :在字符串左侧填充指定数量的零,确保整个字符串达到指定长度。
str="243545533"
re=str.zfill(6) #不足字符串长度,不进行填充了
print(re)#243545533
result=str.zfill(30)
print(result,len(result))#000000000000000000000243545533 30
Python 输入和输出
输入
1.print()内置函数提供在控制台输出打印数据
2.数据直接量(基本输出)(各类数据)
3.输入变量的值(打印是一种取值操作,变量需要定义并赋值,才能取值,否则就会报错,无值可取)
4.传入的直接量或者变量都称为数据 可以传入一个或多个数据用逗号隔开
a=20
b=True
print(10,20,a,b)#10 20 20 True
5.使用sep参数设定分隔符
print(10,34,44,55,sep=",")#10,34,44,55
6.使用end参数改变输出结束符
print("Line 1", end=" --- ")
print("Line 2") # 连续打印时,第二行不会自动换行
x=10
print(x,end=" ")#Line 1 --- Line 2
x=20
print(x,end=" ")
x=30
print(x,end=" ")
x=40
print(x,end=" ")# 10 20 30 40
输入
1.input() 内置函数从标准输入读取文本,默认的标准输入是键盘。
2.input输入的是字符串,会让程序停止在这里,暂时不在往后执行
3.往后执行的条件为在控制台输入值后按enter键,生成输入的结果,后在继续往后运行
4.input每次执行都是独立的,调用一次就执行一次
print("请输入:")
x=input()
print(f"输入的结果是:",x)
print("请输入:",end=" ")#后面的input不换行,在同一行
x=input()
print(f"输入的结果是:{x}")
4.input可以直接进行输出传入的结果,但依旧需要后面进行输入内容
print("===========")
str = input("请输入:")#程序到这里不会继续往下执行,等待用户输入完毕后继续执行
print ("你输入的内容是: ", str)
5.案例:让用户输入一个数字
如果输入的数字不在[1,100]以内就打印"输入不合法",并让用户再次输入 否则: 判断用户输入的数字是否能被5整除 不能整除就打印 "不是5的倍数" 能整除: 判断这个数字是否大于50 大于就打印 "大" 小于就打印 "小"
user=input("请用户输入一个数字:")
if 1<=int(user)<=100:
if int(user)%5==0:
if int(user)>50:
print("大")
else:
print("小")
else:
print("不是5的倍数")
else:
print("输入不合法")
input("请在此输入一个数字:")
条件语句
if条件语句
1.a=变量赋值表达式 =a变量取值表达式
2.格式:if 表达式: 执行体代码(可一行或对行代码),每一行要对齐,不能与if这个单词平级
3.if后面的表达式会判定为布尔值(判定:隐式代码bool(表达式)(看不到执行结果但在执行))
4.如果判定的结果为True,就会执行if语句的执行体,如果为False就不会执行会执行分支语句else
简单if条件语句
if 20:#数据直接量表达式
b=3#声明变量并赋值
print(6666)
print(2222)
#这是一条语句,单语句
print(b)#能否运行取决于if执行体是否执行了,b是否通过if语句进行了声明并赋值了
print(111)
a=True
if a: #a为True执行if语句,a为False不执行if语句 隐式代码:bool(a)
print(a)
if、else条件语句、if嵌套if条件语句
money=0.5
age=1
if money>1:
if age<1:
print("太小了,虽然钱够了,但不可以吃馒头")
print("可以买馒头吃了")
else:
print("钱不够")
if、elif、else条件语句
vip=3
if vip==1:
print("v1用户,牛皮")
vip=3 #被重新赋值了,将会在此运行后面的vip==3的if语句
if vip==2:
print("尊贵的v2用户,牛皮")
if vip==3:
print("尊贵的v3用户,牛皮")
# 优化
vip=3
if vip==1:#条件的表达式执行后的布尔值判断结果为真,后面的elif不在执行,反之,直到其中一个elif满足条件或程序运行完(else语句走完)
print("v1用户,牛皮")
elif vip==2:
print("尊贵的v2用户,牛皮")
elif vip==3:
print("尊贵的v3用户,牛皮")
else:
print("不是vip用户")
vip=3
age=20
if vip==1:
print("v1用户,牛皮")
elif age>=18:
print("成年了")#只执行这条elif语句
elif vip==3:
print("尊贵的v3用户,牛皮")
else:
print("不是vip用户")
循环语句
range函数
1.用于生成一个整数序列,序列中的每个元素按照指定的步长递增(默认步长为1)。这个函数并不会真正创建一个列表,而是返回一个可迭代的对象——range对象。当你在循环中使用它时可以遍历内部的元素
2.arr=range(10,30)#10到29 arr是一种数据容器(迭代器,暂时不讲),可以用循环语句去取出它里面的数据
3.填一个参数就是0到参数-1
4.填两个参数,第一个是起始值,第二个是结束值,但不包含结束值这个数
5.填三个参数,前两个参数和填两个参数一致,第三个参数是步长(假设步长为2,就是隔一个数取第二个数)
6.格式 range(stop) range(start, stop) range(start, stop, step) 7.参数说明: start(可选):序列的起始值,默认是0。 stop:序列的停止值,序列不会包含此值。 step(可选):每次迭代增加的步长,默认是1。
arr=range(10,30)
print(arr)
for el in arr:
print(el,111111111111111)#11111111调试手段
for i in range(10):
print(666)#打十次666
for-in 循环
1.for 循环 用于迭代遍历可迭代对象(如列表、字符串、字典等)
2.案例
打印这个列表中的每一个数据 ,判断列表中的每一个数据,是偶数就打印 10-偶数 奇数打印 23-奇数
arr=[10,22,33,53,66,22,43]
for x in arr:
print(x)
if x%2==0:
print(f"{x}-偶数")
else:
print(f"{x}-奇数")
有一个列表全是数字,求列表中的所有数字的和
sum=0
arr=[11,32,43,22,63,67,32]
for x in arr:
sum+=x
print(sum)
循环数字范围
for i in range(1, 10, 2): #1,3,5,9
#隐式代码 i=顺序
print(i)
i += 2 #因为这里的操作导致和range的值一致 3,5,7,9
print(i)
for i in [2,3,4,5]:#i重新赋值,2,3,4,5都会取到
#隐式代码 i=顺序2,3,4,5
print(i)
i += 2#i的值改了,但循环时又覆盖了 4,5,6,7
print(i)
while 循环
1.while 循环 在条件为真时重复执行代码块
2.案例
某人有100,000元,每经过-次路口,需要交费,规则如下:
1)当现金> 50000时每次交5%
2)当现金< = 50000时,每次交1000,
编程计算该人可以经过多少次路口
money = 100000
n = 0
while money >= 1000:
n += 1
if money > 50000:
money = 0.95*money
else:
money=money - 1000
print('共可以过桥' + str(n) + '次')
#依旧会是一个无限循环
i=5#只要满足条件就会无线循环
while 4<i<20:
print(111)
i=5
while 4<i<20:
print(111)
i+=1#添加一个条件改变循环体的值,这就变成了一个有限循环
如果n是1,判断它是否大于1000而且是闰年 不是的话就加17 求第一满足这个情况的数字是多少
n=1
i=1
while i>0: #条件是一个不等式范围,无限循环
if(n>1000 and ((n%4==0 and n%400!=0) or n%400==0)):
print(n)#1004
break#满足条件时终止循环
else:
n+=17
#逆向思维
n=1
while n<=1000 or not ((n%4==0 and n%100!=0) or (n%400==0)):
n+=17
print(n)
让用户输入一个数字 如果输入的数字不在[1,100]以内就打印"输入不合法",并让用户再次输入 否则: 判断用户输入的数字是否能被5整除 不能整除就打印 "不是5的倍数" 能整除: 判断这个数字是否大于50 大于就打印 "大" 小于就打印 "小"
user=input("请用户输入一个数字:")
while user:
intuser = user.isdigit()
if intuser:
if 1 <= int(user) <= 100:
if int(user) % 5 == 0:
if int(user) > 50:
print("大")
break
else:
print("小")
break
else:
print("不是5的倍数")
break
else:
print("输入不合法,超出范围")
user=input("请在此输入一个数字:")
# 如果在返回重来,循环语句
else:
print(f"你输入的{user}是非纯数字的字符串,请重新输入")
user = input("请在此输入一个数字:")
循环控制
1.break:用于跳出当前循环。
for i in range(1,20):
if i%3==0:
break
print(i)#1,2
for i in range(5):#不需要初始化循环体变量,只需要循环体变量名
for j in range(4):
print(11)
break
print(222) #结果 11 22 11 22 11 22 11 22 11 22
# 判断这个数组中是否有奇数
re=0
arr=[11,23,11,22,13,22,44,33]
for el in arr:
if el%2==1:
re=1
print(re)#1
break#只作用于循环语句,跳出当前循环,循环不在执行
print(111)#当break被执行时,循环不在进行,当前循环的后面代码也不能执行
n=1
while n<10:
print(n) #1,2,3,4,
n+=1
if n==5:
break
2.continue:用于跳过当前迭代,继续下一次迭代。
for i in range(1,20):
if i%3==0:
continue
print(i)
for i in range(5):
if i==3:
continue#当前这次循环的时候,当前循环里面的所有程序不在运行,之间进入本次循环的下次循环
print(i)#0,1,2,4
pass 语句
1.pass是空语句,是为了保持程序结构的完整性。
2.pass 不做任何事情,一般用做占位语句
for x in range(10):
if x == 7:
pass#如果执行体不写,那么程序要报错,因为 执行体代码(可一行或对行代码),为了保持结构的完整
else:
print(x)