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
posted @   ArMinLi  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示