?Python中的字符串是由一系列字符组成的。字符串是不可变的,这意味着一旦创建了一个字符串,就不能修改它的值。但是,可以通过连接、切片等方式操作字符串。例如:
# 连接字符串
str3 = str1 + ' ' + str2
print(str3) # 输出:hello, world! 你好,世界!
# 切片操作
sub_str = str1[0:5]
print(sub_str) # 输出:hello
字符串的定义很简单,变量名 + 赋值运算符 + 引号。引号中可以放入任何字符,通常情况下都使用双引号。例如:
str1 = "这里是中国" # 输出:这里是中国
str2 = 'Chinese' # 输出:Chinese
str3 = "hello '小明'" # 输出:hello '小明'
str4 = '"金铲铲"' # 输出:"金铲铲"
无论用双引号还是单引号都可定义字符串,单、双引号可以进行嵌套。?
常见的特殊字符有:\ 、\n、\t、\b、"""、"、'? 。
转义字符:?\
作用:转义字符的作用就是把特殊字符转换成普通的字符
# 对特殊字符进行转义 str = " \\, \\\\, \\n, \\t, \\b, \", \', \"\"\" " print(str)
输出结果: \, \\, \n, \t, \b, ", ', """?
特殊字符均被输出出来,因为使用了转义字符进行的转义。
换行符:\n
作用:加入字符串中输出时可进行换行
print("你\n好\n呀")
输出结果:你
? ? ? ? ? ? ? ? ? 好
? ? ? ? ? ? ? ? ? 呀
制表符:\t
?作用:相当于一个Tab的距离,目的是为了让输出内容对齐美观
print("1\t", "2\t", "3\t","45") print("上山\t", "打\t", "老\t", "虎")
输出结果:
你会发现,使用了制表符,输出内容都是左对齐的。
退格符:\b
作用:使输出内容被退格?
print("老虎没打着\b")
输出结果:老虎没打
?引号:"""、"、'
作用:三引号、双引号、和单引号。都可用于定义字符串。""" 用于带格式的字符串,输出时会保留字符串的格式。双、单引号除了长得不一样,无任何区别。
str1 = """ * *** ***** """ str2 = "夜空中" \ "最亮的星" str3 = '请指引' \ '我前行' # 输出 print(str1) print(str2) print(str3)
输出结果:
三引号的内容格式被保留了,单、双引号中的内容是可以通过 \ 进行连接的。由于 PEP8编码规范规定单行字符串不要超过120个字符,所以可以使用 \ 连接换行字符串。
有两种:
演示代码:
# 使用+拼接
str1 = "半岛" + "铁盒"
print(str1)
# 使用*重复
str2 = "她说 " * 3
print(str2)
输出结果:
半岛铁盒
她说 她说 她说??
索引下标和之前讲过的列表相似,包括以下三点:
# 输出字符串中每个字符的索引和对应字符1
str1 = "那是我日夜思念,深深爱着的人啊"
for element in str1:
print(str1.index(element), element, end=" | ")
print()
# 通过索引查找字符
char = str1[3]
print(char)
输出结果:
?下标时从0开始的,最大时 len -1,并且索引 3 对应的元素时“日”。
?字符串的遍历和列表的遍历可以说是相同的,有两种方式。
# 直接对字符串遍历 str1 = "雨下整夜" for i in str1: print(i, end="*") print() # 通过索引遍历 str2 = "我的爱溢出就像雨水" for j in range(len(str2)): print(str2[j], end="^")
?输出结果:
?通过使用format、strip、count 这些方法来实现。
format(): 将字符串格式化
strip(): 剔除开头和结尾的指定字符,默认剔除空格
count(): 统计字符串出现的次数,默认从开始到结尾,也可指定开始和结束位置(不包含)。
代码如下:
# format()
a = 10
b = 20
print(f"a={a},b={b}")
print("a={1},b={0}".format(a, b))
输出结果:a=10,b=20
? ? ? ? ? ? ? ? ? a=10,b=20
# strip() lstrip()左 rstrip()右
# 剔除空格(默认),或指定字符
print(" hi ".strip())
print("**hi**".lstrip("*"))
print("**hi**".rstrip("*"))
输出结果:hi
? ? ? ? ? ? ? ? ? hi**
? ? ? ? ? ? ? ? ? **hi
# count()
# 统计索引4-6的 * 的个数,不包括6
print("**hi***".count(" ", 4, 6))
?输出结果:2
?通过 join 和 split 实现。
join:拼接,拼接内容必须可被遍历。
split:切割,将字符串使用指定内容切割成列表。
# join
print("python,".join("hello world"))
print("python,".join(["1", "2", "3"]))
# split()
str1 = "2024/1/14"
print(str1.split("/"))
输出结果:?
h秀e秀l秀l秀o秀 秀w秀o秀r秀l秀d
1啊2啊3
['2024', '1', '14']
查找:find?
# find(), 默认查找指定字符串第一次出现的位置,匹配失败返回 -1
print("**hi**".find("i"))
print("**hi**".rfind("h")) # 从右侧匹配第一个
print("**hi**".rfind("1"))
输出结果:
3
2
-1
还用另外一个查找 index,和 find?相似,差别就在 index 在查找不到时会直接报错。
?替换:replace
str1 = "他喜欢你,他喜欢你"
print(str1.replace("他", "我"))
输出结果:我喜欢你,我喜欢你
返回结果是True或False。?
切片是Python独有的,?是一种操作序列类型(如字符串、列表、元组等)的方法,它可以从序列中提取一部分元素生成一个新的序列。切片操作使用冒号分隔的起始和结束索引来指定要提取的元素范围。
?切片操作的语法如下:
sequence[start:end]
其中,start
表示切片的起始索引,end
表示切片的结束索引。需要注意的是,切片操作是左闭右开的,即包含起始索引对应的元素,但不包含结束索引对应的元素。
切片操作还可指定每次提取元素的间隔,如step
表示步长。例如,sequence[start:end:step]
表示从起始索引开始,每隔step
个元素提取一个元素,直到结束索引的前一个元素。
字符串切片:
# 字符串切片
s = 'hello world'
print(s[0:5]) # 输出 'hello'
print(s[7:12]) # 输出 'world'
print(s[::2]) # 输出 'hlo ol'
输出结果:
hello
orld
hlowrd
列表切片:
# 列表切片
lst = [1, 2, 3, 4, 5]
print(lst[1:4]) # 输出 [2, 3, 4]
print(lst[:3]) # 输出 [1, 2, 3]
print(lst[::2]) # 输出 [1, 3, 5]
输出结果:
[2, 3, 4]
[1, 2, 3]
[1, 3, 5]
元组切片:
# 元组切片
tup = (1, 2, 3, 4, 5)
print(tup[1:4]) # 输出 (2, 3, 4)
print(tup[:3]) # 输出 (1, 2, 3)
print(tup[::2]) # 输出 (1, 3, 5)
输出结果:
(2, 3, 4)
(1, 2, 3)
(1, 3, 5)
终于写完了,内容好多啊,后面常见操作有些没给代码,读者可以试着手动编写一下,后续我会尽力补上,over,喜欢作者可以给个关注哦,持续更新中🌹🌹🌹?