一.字符串基础
1. 定义
1.1 使用双引号:
# 声明字符串
s0 = "hello word"
print(type(s0))
1.2 使用单引号:
s1 = 'hello word'
print(type(s1))
1.3 单引号,双引号要嵌套使用:
s2 = 'shis is a "example"'
print(type(s2))
2. PEP8规范
2.1 单行字符串不要超过120个字符,可以使用 \ 连接换行字符串:
s3 = "wrtyjuukjhgfd123fsdghjkf#$%nkrjgtdfdf" \
"df;esflghg00000000888888888888888k;" \
"fdgkhbmlvfcd,s;x"
print(type(s3))
3. 三引号 : """ ""‘’
3.1 三引号比较特殊,一般用于带格式的字符串,里面写的字符串都是一个完整的内容,包括换行
s5 = """this is china.
1234
5678
i love python
"""
print(type(s5),s5)
# 格式化字符串
s6 = """
*
***
*****
*******
"""
print(type(s6),s6)
3.2 三引号也可以用于文档注释,在文档的开头应用
"""
这里是文档注释、
字符串是基本数据类型
str()可以将任意数据类型转换为字符串、
单引号,双引号都可以引导字符串、
放在文档开头
三引号声明特殊格式字符串,以及文档注释,以及类注释
"""
4. 特殊字符
4.1 转义字符 \
4.2 \\ 第一个反斜杠是转义第二个反斜杠
# 转义字符 \ 会将后续内容转义 \p无意义 先用一个 \ 转义\p
s7 = "网盘的连接地址是 \\\\192.168.10.55\\public"
print(s7,type(s7))
# \\ 第一个反斜杠是转义第二个反斜杠
# 告诉解析器第二个反斜杠
4.3 \n 换行
s8 ="想要换行输入\\n就可以了"
print(s8,type(s8))
4.4 \t 制表符
s9 ="想要使用制表符输入\\t就可以了"
print(s9,type(s9))
4.5 \"双引号
s10 = "想要输入双引号输入\"就可以了"
print(s10,type(s10))
4.6 \'单引号
s11 = '想要输入双引号输入\'就可以了'
print(s11,type(s11))
4.7 \b 退格键
s12 = "哎呦喂\b奥恩"
print(s12,type(s12))
二、字符串的遍历
1.1 特殊使用
1.1.1 使用+号将字符串拼接
s0 ="hello worle"
s1 = "world"
s2 = s0 + s1
print(s2,type(s2))
1.1.2 使用*号将字符串重复
s0 ="hello worle"
s1 = "world"
s2 = s0 + s1
print(s2,type(s2))
s2 *= 3 # hello world 重复三遍
print(s2,type(s2))
1.2 索引,又叫下标
1.2.1 从首字符开始,0-10数
# 索引:下标
s0 = "hello world"
print(s0[0])
1.2.2 范围 从0开始到 len-1,len()方法中可以获取字符串的长度
# 通过索引
# 可以找到字符串中的任何一个索引
input_str = input("输入字符串:")
print(len(input_str),input_str[0],input_str[len(input_str)-1])
1.3 遍历
1.3.1 for i in range 直接获取每一个字符
# 遍历
input_str = input("输入字符串:")
# 简单只适合获取字符串内容,每一个字符
for c in input_str:
print(c)
1.3.2 i 代表每一个字符的索引,s[i]代表索引对应的字符
length = len(input_str)
# 带有索引,适合获取索引以及该索引对一个的字符
for i in range(length):
print(i,input_str)
案例:输入一个字符串 判断字符串是否对称
s = input("输入一个字符串:")
# s = "1234554321"
for i in range(len(s) // 2):
if s[i] != s[len(s)-1-i]:
print("不是对称")
break
else:
print("是对称")
三、 字符串的操作方法
3.1 format( )将字符串格式化 "a={},b={}".format(10,20)
# format 将字符串格式化,
a = 10
b = 20
print(format("10, 20"))
print(f"a={a},b={b}")
# 格式化字符串,默认按照顺序赋值,也可以指定参数位置
print(f"a={a},b={b}".format(a,b))
3.2 "".join()拼接
# 将前面的内容,添加到后面的每一个字符中
# 后面的内容要为可以迭代(可以使用for遍历)的内容
print("+".join("helloword"))
print("-".join(["天", "天", "开", "心"]))
# # h+e+l+l+o+w+o+r+d
# # 天-天-开-心
3.3 split分割 将字符串使用指定内容切割成列表
# split分割,返回列表
print("123123123123123".split("2"))
# ['1', '31', '31', '31', '31', '3']
3.4 strip剥离,strip()默认去除空格,可编辑方法,去除其他内容
# 去除的内容无论是正的还是反的都可以去除,并且可以不论几个都可以去除
print(" ‘默认去除空格’ ".strip())
print("*****--可编辑去除内容-*-*".strip("**"))
print("1234--可编辑去除内容-321".strip("123"))
print("1234--可编辑去除内容-123".strip("123"))
print("3211234--可编辑去除内容-123321".strip("123"))
# # --可编辑去除内容-*-
# # 4--可编辑去除内容-
# # 4--可编辑去除内容-
# # 4--可编辑去除内容-
3.5 count()统计字符串出现的次数,默认从开头到结尾,也可以自己编辑,结尾不包括
# .count("", start, end)
print("1231231231231243".count("123"))
print("1231231231231243".count("123", 3, 9))
# # 0123456789
# # 结果
# # 4
# # 2
3.6 find 查找第一次出现的位置
# -1表示没有
# 索引不会变,都是从左到右
# 默认从左到右,从开始到结尾
# .find("", start, end)
print("123123123123123".find("312"))
# 结果:2
# rfind("", start, end),从右开始找,找到的第一个等于字符串的索引
# 结尾边界不包括,即结尾要取到需要索引加一
print("123123123123".rfind("123", 5, 12))
# # 0123456789
# 结果:9
3,7 index 查找字符串第一次出现的位置
# .index("", start, end)不包括最后一个索引值
# 和find相似,但找不到结果直接报错,索引值超过不会报错
print("123123123123".index("23", 3, 10))
print("123123123123".index("243", 3, 10))
# 结果:4
# ValueError: substring not found
# (2)、rindex
# 默认从右侧开始数,也可设置开始结束值,但索引还是从左向右开始
print("123123123123".rindex("12"))
print("123123123123".rindex("23", 5, 12))
# 结果:9
# 10
3.8 (1)、encode 编码
(2)、decode解码
# encode编码解码方式要一致
# encoding默认为UTF-8模式,可定义其他编码
num_encode = "清澈的小溪".encode(encoding="GB2312")
print(num_encode)
print(num_encode.decode(encoding="GB2312"))
# 结果:
# b'\xc7\xe5\xb3\xba\xb5\xc4\xd0\xa1\xcf\xaa'
# 清澈的小溪
3.9 大小写转换,只适用于英文字母
# (1)、capitalize() 将首字母转换成大写
print("this is a magnificent building.".capitalize())
# 结果:This is a magnificent building.
# (2)、upper() 全都换成大写
print("this is a magnificent building.".upper())
# 结果:THIS IS A MAGNIFICENT BUILDING.
# (3)、lower() 全都换成小写
print("thIs is a MagniFIcent bUilding.".lower())
# 结果:this is a magnificent building.
# (4)、title() 将所有单词的首字母转换成大写
print("this is a magnificent building.".title())
# 结果:This Is A Magnificent Building.
# (5)、title() 切换大小写
print("thIs is a MagniFIcent bUilding.".swapcase())
# 结果:THiS IS A mAGNIfiCENT BuILDING.
3.10 内容对齐
# (1)、center()居中对齐,其中的参数为字符所占的页面数,即字符串加上填充的总数
# 默认以空格填充,也可定义其他内容,但只能是一个字符,可以是字母、符号、数字、汉字
print("登录页面".center(30, "*"))
# 结果:*************登录页面*************
# (2)、ljust()字符串靠左位置
# 默认以空格填充,也可定义其他内容,但只能是一个字符,可以是字母、符号、数字、汉字
print("Dear Professor:".ljust(30, "+"))
# 结果:Dear Professor:+++++++++++++++
# (3)、ljust()字符串靠右位置
# 默认以空格填充,也可定义其他内容,但只能是一个字符,可以是字母、符号、数字、汉字
print("Yours Sincerely".rjust(30, "-"))
# 结果:---------------Yours Sincerely
# (4)、zfill()以0填充,字符串在右侧
print("Have a good day.".zfill(30))
# 结果:00000000000000Have a good day.
3.11 判断是否以某个字符串为开头或结尾
# (1)、startswith("") 判断开始,参数为眼判断的字符串
print("常记溪亭日暮沉醉不知归路".startswith("常记溪亭"))
# 结果:True
# (1)、endswith("") 判断结束,参数为眼判断的字符串
print("常记溪亭日暮沉醉不知归路".endswith("路归"))
# 结果:False
3.12 replace("", "")替换 两个参数分别是"被替换的内容"和"替换的内容"
print("今天的天气为晴天".replace("晴天", "阴天"))
# 结果:今天的天气为阴天
3.13 判断是否以是字母数字
# (1)、.isalnum() 判断是否为字母或数字
# 字母部分可以是中文和字母,但不能是符号标点
print("今天的天气为晴天Sunday20240111".isalnum())
# 结果:True
# (2)、.isalha() 判断是否全为字母
print("Sunday转阴".isalpha())
# 结果:True
# (3)、.isnumeric() 判断是否全为数字
# 只能是整数,不可为小数
num = 123.45
a = str(num)
print(a.isnumeric())
print("43265726".isnumeric())
# 结果:False
# True