1.字符串的定义
在Python中,字符串是用于存储文本或字符序列的数据类型。它们由一系列字符(例如字母、数字、标点符号、空格等)组成,并且这些字符被包含在一对单引号(' ')、双引号(" ")或三引号(''' ''' 或 """ """)中。需要注意的是,单引号和双引号需要成对使用,三引号一般用于代码开头的特殊注释。
字符串在Python中是不可变的,这意味着一旦创建了一个字符串,你就不能更改它的内容。但是,你可以创建新的字符串,这常常是通过字符串的一些常见操作来实现的。
在字符串中,某些字符前面带有反斜杠"/"表示特殊的意义,这些字符被称为转义字符。例如,\n
表示换行,\t
表示制表符,\\
表示反斜杠本身。
2.字符串的遍历
Pyhon中的字符串是可迭代类型的,可以直接遍历拿到字符串中的每一个字符,也可以通过关注其索引下标来进行字符串的遍历。
下方代码是这两种遍历方法的简单演示:
s0 = "中华人民共和国"
# 直接遍历
for e in s0:
print(e)
# 通过索引进行遍历
for i in range(len(s0)):
print(s0[i])
两种方法打印输出的结果都一样,第一种方法直接拿到s0中的每一个字符,第二种方法先对s0的长度进行遍历并依次赋予i,最后通过索引s0[i]拿到s0中的每一个字符。
3.字符串的常见操作
Python中常见的字符串查找方法有:index(),rindex(),find(),rifind(),其中index()和find()方法是按照字符串从左至右的顺序进行查找,rindex()和rifind()方法是按照字符串从右至左的顺序进行查找,需要注意的是,虽然他们是按照不同的顺序进行查找,但是不论按照哪种顺序对字符串进行查找,返回的索引还是从前到后的索引。
下面通过一些代码来进行解析:
# "a".index("b") 从前到后查找b在a中首次出现的索引,如果找不到会报错
print("中华人民共和国合同法".index("共和国")) # 4
# "a".rindex("b") 从后到前查找b在a中最后一次出现的索引
# 找不到会报错
print("中华人民共和国合同法共和国".rindex("共和国")) # 10
# "a".find("b",start,end) 在[start, end)区间从前到后查找b是否在a中
# 如果在返回首次出现的索引,如果不在返回-1
print("中华人民共和国合同法".find("共和国")) # 4
print("中华人民共和国合同法".find("共和国0")) # -1
# "a".rfind("b",start,end) 在[start, end)区间从后到前查找b是否在a中
# 如果在返回最后一次出现的索引,如果不在返回-1
print("中华人民共和国合同法共和国".rfind("共和国")) # 10
print("中华人民共和国合同法共和国".rfind("共和国0")) # -1
Python中常见的字符串中字母转换的方法有:capitalize(),upper(),ower(),swapcase(),title(),这些方法改变的都是原来字符串中字母的大小写。
下面通过一些代码来进行解析:
# capitalize()方法将字符串的首字母转换为大写,其余字母转换为小写。
print("aBcd efG".capitalize()) # Abcd efg
# upper()方法将字符串的所有字母转换为大写
print("aBcd".upper()) # ABCD
# lower()方法将字符串的所有字母转换为小写
print("aBcd".lower()) # abcd
# swapcase()方法将字符串中大写字母转换为小写字母,小写字母转换为大写字母
print("aBcd efG".swapcase()) # AbCD EFg
# title()方法将字符串中所有的首字母转换为大写字母,其余字母转换为小写字母
print("aBcd efG".title()) # Abcd Efg
Python中常见的字符串中指定字符换位的方法有:center(),ljust(),rjust(),zfill(),这些方法改变的都是原来字符串中特定字符的位置。
下面通过一些代码来进行解析:
# center(a,b)方法用于返回一个居中的字符串
# 如果原始字符串的长度小于指定的宽度a
# 则在其左侧和右侧填充指定的字符b,以达到指定的宽度
print("醒醒".center(10, "+")) # ++++醒醒++++
# ljust(a,b)方法用于返回一个居左的字符串
# 如果原始字符串的长度小于指定的宽度a
# 则在其左侧和右侧填充指定的字符b,以达到指定的宽度
print("醒醒".ljust(10, "+")) # 醒醒++++++++
# rjust(a,b)方法用于返回一个居右的字符串
# 如果原始字符串的长度小于指定的宽度a
# 则在其左侧和右侧填充指定的字符b,以达到指定的宽度
print("醒醒".rjust(10, "+")) # ++++++++醒醒
# zfill(a)方法用于在字符串的左侧填充0,直到达到指定的宽度a
print("醒醒".zfill(10)) # 00000000醒醒
Python中常见的字符串中查询指定字符是否符合某种条件的方法有:startswith(),endswith(),isalpha(),isdigit(),这些方法返回的结果都为布尔值类型。
下面通过一些代码来进行解析:
# startswith(a)方法用于检查字符串是否以指定的前缀a开头,并返回布尔值
print("中华人民共和国合同法共和国".startswith("中华")) # True
# endswith(a)方法用于检查字符串是否以指定的后缀a结尾,并返回布尔值
print("中华人民共和国合同法共和国".endswith("共和国")) # True
# isalpha()用于检查字符串是否仅由字母组成,打印结果为布尔值
print("".isalpha()) # False
# isdigit()用于检查字符串是否仅由数字组成,打印结果为布尔值
print("123".isdigit()) # True
Python中常见的对字符串进行分割,拼接与替换操作的方法有:split(),join(),replace(),这些方法通过对原来的字符串进行一系列的操作,将结果返回一个新的字符串。
下面通过一些代码来进行解析:
# split()方法接受一个参数(通常是一个分隔符或子串)
# 然后将原始字符串在这个分隔符出现的位置分割成多个子串
# 并将这些子串作为列表的元素返回。
r = "中华人民共和国合同法".split("共和国")
print(type(r), r) # <class 'list'> ['中华人民', '合同法']
# "a".join(b)方法用于将序列b(如列表或元组)中的元素
# 以指定的字符或字符串a作为分隔符连接成一个新的字符串。
print("++".join(r)) # 中华人民++合同法
# replace() 方法用于替换字符串中的某些部分。
# 该方法接受两个参数:要被替换的子串(也称为旧字符串)和替换后的新字符串。
# 然后,它返回一个新的字符串,其中所有出现的旧字符串都被替换成了新字符串。
print("中华人民共和国合同法".replace("合同法", "刑法")) # 中华人民共和国刑法
此外,Python中还有一些方法可以进行字符串中多余空格的剔除和字符串编码的转换,如:srtip(),lsrtip(),encode(),decode()。
下面通过一些代码来进行解析:
# srtip()方法用于剔除字符串左右两边不必要的空格
print(" admin password ".strip()) # admin password
# lsrtip()方法用于剔除字符串左边不必要的空格
print(" admin password ".lstrip()) # admin password
# encode() 方法用于将字符串(str)转换为字节串(bytes)。
# 它接受一个可选的 encoding 参数,指定使用的字符编码。
# 如果未指定,则默认使用系统的默认编码。
bytes_result = "中华人民共和国合同法".encode(encoding="gbk")
print(type(bytes_result), bytes_result)
# 输出结果为 <class 'bytes'>
# b'\xd6\xd0\xbb\xaa\xc8\xcb\xc3\xf1\xb9\xb2\xba\xcd\xb9\xfa\xba\xcf\xcd\xac\xb7\xa8'
# decode() 方法用于将字节串(bytes)转换回字符串(str)。
# 它同样接受一个可选的 encoding 参数。
# 如果尝试使用一个错误的字符编码来解码字节串,将会引发 UnicodeDecodeError。
str_result = bytes_result.decode(encoding="gbk")
print(type(str_result), str_result) # <class 'str'> 中华人民共和国合同法
总之,字符串是不可变类型的,这些对于字符串的操作并不会改变原来的字符串,而是新生成了一个字符串,并将改变后的字符串赋予给它。