Python 篇章(九)
一、String 概念
1. 什么是字符串?
- 字符串是以单引号或双引号括起来的文本
- 例如:
'abc'
"abc123"
2. 如何创建字符串?
str1 = "lemon is a good man!"
str2 = "sunck is a nice man!"
注意:字符串不可变!!!举例说明:
str3 = "*lemon*"
print(str3.strip("*")) #lemon;这仅仅是strip返回的输出结果,而实际上并没有改变字符串
print("str3 = %s" % (str3)) #str3 = *lemon*;因为,字符串类型不可变!!!
二、string 方法
1. 字符串运算
1)字符串连接
str4 = "what "
str5 = "is "
str6 = "name?"
str7 = str4 + str5 + str6
print(f"str7 = {str7}")
2)输出重复字符串
str7 = "lemon"
str8 = str7 * 3
print(f"str8 = {str8}")
2. 字符串的截取
-
访问字符串中的某一个字符,通过索引下标查找字符,索引从0开始
-
从开始下标之后开始截取,截取到结束下标之前
-
格式:
str
变量名[开始下标:结束下标]
# 只截取下标为 1 的字符串
str9 = "sunck is a good man!"
print(str9[1])
# 截取字符串中的一部分;从给定下标处开始截取给定下标之前
str10 = "sunck is a good man!"
str11 = str10[11:15]
print(f"str11 = {str11}")
# 从开头截取到给定下标之前
str12 = "sunck is a good man!"
str13 = str12[:5]
print("str13 = ", str13)
# 从给定下标处开始截取到结尾
str14 = "sunck is a good man!"
str15 = str14[16:]
print("str15 = ", str15)
3. 判断数据元素是否存在
#1 身份运算符:
str16 = "sunck is a good man!"
print("good" in str16) # True
print("good" not in str16) # False
#2 成员运算符:
gl_str = "lemon"
print("lemon" is gl_str) # True
print("lemon" is not gl_str) # False
4. 判断系列方法
#1 startswith("str")
# 功能:判断指定的字符串是否为开头;是返回True,否则返回False
str4 = "lemon is a very good"
print(str4.startswith("lemo"), str4.startswith("lemon"), str4.startswith("lemons"), str4.startswith("good")) # 返回值:True True False False
#2 endswith("str")
# 功能:判断指定的字符串是否为结尾;是返回True,否则返回False
str5 = "lemon is a very good"
print(str5.endswith("od"), str5.endswith("good"), str5.endswith("goods"), str5.endswith("lemon")) # 返回值:True True False False
#3 isalpha()
# 功能:判断标识符里的str是否都为字母;是返回True,否则返回False
str1 = "lemon is a very good"
str2 = "abcdefgklkiyjbmyzbxc"
print("str1 = %s" % str1.isalpha()) # 返回值:str1 = False
print("str2 = %s" % str2.isalpha()) # 返回值:str2 = True
#4 isdigit()
# 功能:判断标识符里的str是否都为数字;是返回True,否则返回False
str1 = "12345678@"
str2 = "123456789"
print("str1 = %s" % str1.isdigit()) # 返回值:str1 = False
print("str2 = %s" % str2.isdigit()) # 返回值:str2 = True
#5 isalnum()
# 功能:判断标识符里的str是否都为字母、数字、字母数字;是返回True,否则False
str1,str2,str3,str4,str5 = "lemon is very good", "lemon is 123123", "123456", "abcdefg", "123abc"
print("str1 = %s" % str1.isalnum()) # 返回值:str1 = False
print("str2 = %s" % str2.isalnum()) # 返回值:str2 = False
print("str3 = %s" % str3.isalnum()) # 返回值:str3 = True
print("str4 = %s" % str4.isalnum()) # 返回值:str4 = True
print("str5 = %s" % str5.isalnum()) # 返回值:str5 = True
#6 isspace()
# 功能:判断标识符里的str是否都为空格;是返回True,否则False
str1 = " "
str2 = ""
str3 = "bbb 222 @@@"
print("str1 = %s" % str1.isspace()) # 返回值:str1 = True
print("str2 = %s" % str2.isspace()) # 返回值:str2 = False
print("str3 = %s" % str3.isspace()) # 返回值:str3 = False
5. 格式化输出 与 转义字符
- 格式化输出功能
- 简化代码
- 常用的格式化输出符
- %d(整数)
- %f(浮点数)
- %s(字符串)
num1 = 10
f1 = 10.123456789 # 小数部分默认为六位,并且默认就会四舍五入
str1 = "lemon"
print("num1 = %d, f1 = %f, str1 = %s" % (num1, f1, str1))
print("num1 = %.3d, f1 = %.3f, str1 = %.3s" % (num1, f1, str1))
#【%.3d】:让这个整数值保留三位数,位数不够向前补0,如果够就保持原样
#【%.3f】:只保留小数的前三位,会四舍五入
#【%.3s】:只保留这个字符串的前三位
- 转义字符功能: \ 将一些字符转换成有特殊含义的的字符;常见的有\n \t 等等......
1):\n #换行符
print("lemon\n18")
num1 = 202
str1 = "lemon"
print("num1 = %d\nstr1 = %s" % (num1,str1))
print(f"num1 = {num1}\nstr1 = {str1}")
# 思考:如果字符串内有很多\n符,写在一行不好阅读怎么办?比如print('aaa\nbbb\nccc......\n')
# 解决方法1:
print("""
good
nice
hostname
""")
# 解决方法2:
num1 = 303
str1 = "lemon"
print("""
num1 = %d
str1 = %s
""" % (num1,str1))
2): \t #制表符
print("101\tlemon")
num1 = 202
str1 = "lemon"
print("num1 = %d\tstr1 = %s" % (num1,str1))
# 思考:如果字符串中有好多字符串都需要转义,就需要加入好多\,为了简化,python允许用r表示内部的字符串默认不转义
# 比如:我就想打印“C:\Windows\tystem32\nppraiser”这个字符串内容,但是windown的路径正好有很多开头是n或t等等一些特殊字符怎么办?
# 解决方法1:
print(r"C:\Windows\tystem32\nppraiser")
# 解决方法2:
print("C:\\Windows\\tystem32\\nppraiser")
3): \\
# 例如:
print("101 \\ lemon")
num1 = 202
str1 = "lemon"
print("num1 = %d \\ str1 = %s" % (num1,str1))
4): \' \"
print('what is you \'s name?')
print("what is you \"s name?")
# print('what is you 's name?')
# print("what is you "s name?")
# 如果不加\转义符就会报错
6. eavl("str")
功能:将里面的字符串当成有效的表达式来求值并返回结果
num1 = eval("110")
num2 = eval("110.1")
print(type(num1),type(num2),num1,num2)
print(eval("+101")) # 101
print(eval("-101")) # -101
print(eval("10 + 1")) # 11
print(eval("10 - 1")) # 9
print(eval("10 * 3")) # 30
print(eval("10 / 3")) # 3.3333333333333335
print(eval("10 % 3")) # 1
print(eval("10 ** 3")) # 1000
print(eval("10 // 3")) # 3
print(eval("10 > 3")) # 如果10大于3就True,否则就False
print(eval("10 < 3")) # 如果10小于3就True,否则就False
print(eval("10 == 3")) # 如果10等于3就True,否则就False
print(eval("10 >= 3")) # 如果10大于等于3就True,否则就False
print(eval("10 <= 3")) # 如果10小于等于3就True,否则就False
7. len("str")
- 功能:返回字符串的长度【字符个数】
print(len("my name is 'a lemon")) # 19
print(len("my name is 'a lemon李")) # 20
name = "lemon"
print(len(name)) # 5
8. count(str_name,[start],[and])
- 功能:返回字符串中
str
出现的次数,可以指定一个范围,默认是从头到尾
name = "what is you name is the lemon-民!"
print(name.count("is")) # 2
print(name.count("is",8,len(name))) # 1;从字符串的第八个下标开始到结尾
9. lower()
- 功能:转换字符串中大写字母为小写字母
name = "WHAT is YOU NAME LEMON-民!"
print(name.lower()) # what is you name lemon-民!
10. upper()
- 功能:转换字符串中小写字母为大写字母
name = "what IS you name lemon-民!"
print(name.upper()) # WHAT IS YOU NAME LEMON-民!
11. swapcase()
- 功能:转换字符串中小写字母为大写字母,大写字母为小写字母
name = "what IS you NAME lemon-Min!民"
print(name.swapcase()) # WHAT is YOU name LEMON-mIN!民
12. capitalize()
- 功能:首字母大写,其他都为小写
name = "THEN is YOU name LEMON-mIN!民"
print(name.capitalize()) # Then is you name lemon-min!民
13. title()
- 功能:每个单词的首字母大写
name = "what is you name lemon-民!"
print(name.title()) # What Is You Name Lemon-民!
14. center(width, fillchar)
- 功能:返回一个指定宽度的居中字符串,fillchar 为填充的字符串,默认空格填充
name = "what is you name lemon-民!"
print(name.center(40)) # what is you name lemon-民!
print(name.center(40, "*")) # *******what is you name lemon-民!********
print(name.center(40, "*"), "#") # *******what is you name lemon-民!******** #
15. ljust(width, fillchar)
- 功能:返回一个指定宽度的左对齐字符串,
fillchar
为填充字符,默认空格填充
name = "what is you name lemon-民!"
print(name.ljust(40)) # what is you name lemon-民!
print(name.ljust(40, "&")) # what is you name lemon-民!&&&&&&&&&&&&&&&
print(name.ljust(40, "%"), "*") # what is you name lemon-民!%%%%%%%%%%%%%%% *
16. rjust(width, fillchar)
- 功能:返回一个指定宽度的右对齐字符串,fillchar 为填充字符,默认空格填充
name = "what is you name lemon-民!"
print(name.rjust(40)) # what is you name lemon-民!
print(name.rjust(40, "&")) # &&&&&&&&&&&&&&&what is you name lemon-民!
print(name.rjust(40, "%"), "*") # %%%%%%%%%%%%%%%what is you name lemon-民! *
17. zfill(width)
- 功能:返回一个长度为width的字符串,原字符串右对齐,前面补0
name = "what is you name lemon-民!"
print(name.zfill(40)) # 000000000000000what is you name lemon-民!
18. find(name,[start],[and])
- 功能:从左向右检测name字符串是否包含在字符串中,可以指定一个范围,默认是从头到尾;得到的是第一次出现的开始下标,没有则返回-1
name = "what is you name is the lemon-民!"
print(name.find("is")) # 5
print(name.find("man")) # -1
print(name.find("is", 8, len(name))) # 17;从字符串的第八个下标开始到结尾
19. rfind(name,[start],[end])
- 功能:从右向左检测name字符串是否包含在字符串中,可以指定一个范围,默认是从头到尾;得到的是第一次出现的开始下标,没有则返回-1
name = "what is you name is the lemon-民!"
print(name.rfind("is")) # 17
print(name.rfind("man")) # -1
print(name.rfind("is", 0, 15)) # 5;从0开始,截止到第15个下标结束
20. index("str", start=0, end=len(str))
- 功能:和
find()
一样,只不过如果str
不存在的时候会报错
name = "what is you name is the lemon-民!"
print(name.find("man")) # -1
print(name.index("man")) # 报错;ValueError: substring not found
21. rindex(str, start=0, end=len(str))
- 功能:和
rfind()
一样,只不过如果str
不存在的时候会报错
name = "what is you name is the lemon-民!"
print(name.rfind("man")) # -1
print(name.rindex("man")) # 报错;ValueError: substring not found
22. lstrip()
- 功能:截掉字符串左侧指定的字符,默认为空格
name1 = " what is you name the lemon-民!"
name2 = "***************what is you name the lemon-民!"
print(name1.lstrip()) # what is you name the lemon-民!
print(name2.lstrip("*")) # what is you name the lemon-民!
23. rstrip()
- 功能:截掉字符串右侧指定的字符,默认为空格
name1 = "what is you name the lemon-民! "
name2 = "what is you name the lemon-民!***************"
print(name1.rstrip()) # what is you name the lemon-民!
print(name2.rstrip("*"), "@") # what is you name the lemon-民! @
24. strip()
- 功能:截掉字符串左侧和右侧指定的字符,默认为空格
name = "**********my name is lemon************"
print(name.strip("*")) # my name is lemon
25. split(str="",num)
- 功能:将字符串切割成列表,以
str
为分隔符截取字符串,指定num
,则仅截取第num
个字符串 - 示例1
str1 = "my*name*is*a*lemon"
print(str1.split("*")) # ['my', 'name', 'is', 'a', 'lemon']
print(str1.split("*",3)) # ['my', 'name', 'is', 'a*lemon']
- 示例2
list1 = str1.split("*")
c = 0
for i in list1:
if len(i) > 0: # 统计list1列表的长度
c += 1
print(c) # 5;打印list1列表的元素数量
26. splitlines([keepends])
- 功能:按行将字符串切割成列表,如果
keepends
==True
,会保留换行符,默认False
str2 = """lemon is a good man!
lemon is a nice man!
lemon is handsome man!
"""
print(str2.splitlines())
# 结果 ['lemon is a good man!', 'lemon is a nice man!', 'lemon is handsome man!']
print(str2.splitlines(True))
# 结果 ['lemon is a good man!\n', 'lemon is a nice man!\n', 'lemon is handsome man!\n']
27. join()
- 功能:以指定的字符串为分隔符,将列表中的所有元素组成一个字符串
list = ["lemon", "is", "a", "good", "man"]
str = " *_* ".join(list)
print(str, type(str)) # lemon *_* is *_* a *_* good *_* man <class 'str'>
28. max() min()
- 功能:
max
找出最大的一位字符串(z)最大;min
找出最小的一位字符串(A)最小。
str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
print(max(str)) # z
print(min(str)) # A;如果有空格,空格就是最小的
29. replace(oldstr, newstr, count)
- 功能:用
newstr
替换oldstr
,默认是全部替换。如果指定了count
,那么则指替换前count
个 - 示例:【字符串不可变】
str1 = "my name is a lemon lemon lemon"
print(str1.replace("lemon", "red")) # my name is a red red red
print(str1.replace("lemon", "red", 2)) # my name is a red red lemon
print("str1 = %s" % (str1)) # 字符串不可变!!!
# str2、str3只不过是利用str1对他们自身赋值,其实并没有改变str1,因为,字符串不可变!
str2 = str1.replace("lemon","blue")
print("str2 = %s" % (str2)) # str2 = my name is a blue blue blue
str3 = str1.replace("lemon","blue",2)
print("str3 = %s" % (str3)) # str3 = my name is a blue blue lemon
print("str1 = %s" % (str1)) # str1 = my name is a lemon lemon lemon
30. maketrans("str1", "str2") translate(identifier)
- 功能:将字符串1转换成字符串2
str1 = str.maketrans("ai", "65") # 要转换的字符串 目标字符串 a--6 i--5
str2 = "my name is a lemon"
str3 = str2.translate(str1)
print(str3) # my n6me 5s 6 lemon
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律