Bootstrap

Python字符串深度探索:定义、遍历与常见操作

目录

1. 字符串的定义

2. 字符串的遍历

3.字符串的常见操作

3.1 字符串拼接与重复

3.2 字符串切片

3.3 字符串查找与替换

3.4 字符串分割与连接

3.5 字符串清楚前后字符

3.6 检查字符串

3.7 字符串填充

3.8 编码和解码

3.9 判断开头和结尾字符

3.10 大小写转换

3.11 字符串出现次数计算



在Python中,字符串是处理文本数据的基石。以下将通过具体的代码示例,展示字符串的定义、遍历以及一系列常见的操作。


1. 字符串的定义

Python中的字符串可以使用单引号、双引号或三引号来定义。

# 使用单引号  
s1 = 'Hello, world!'  
  
# 使用双引号  
s2 = "Python is fun!"  
  
# 使用三引号定义多行字符串  
s3 = """This is a  
multi-line string example."""  
  
print(s1)  
print(s2)  
print(s3)

2. 字符串的遍历

遍历字符串意味着按顺序访问其中的每个字符。

# 直接遍历每个字符
s = 'Python'  
for char in s:  
    print(char)


# 根据字符串的索引,遍历字符串
s = "python"
# len()方法可以获取字符串的长度
length = len(s)
for i in range(length):
    print(s[i])

3.字符串的常见操作

3.1 字符串拼接与重复

关键点

  • 字符串拼接:使用加号(+)操作符连接两个或多个字符串。
  • 字符串重复:使用星号(*)操作符和重复次数来重复一个字符串。

字符串拼接

# 拼接    
s1 = 'Hello, '    
s2 = 'world!'    
s3 = s1 + s2    
print(s3)  # 输出: Hello, world!

字符串重复

# 重复    
s = 'Python '    
s_repeated = s * 3    
print(s_repeated)  # 输出: Python Python Python

3.2 字符串切片

关键点

  • 切片基础:通过[start:end](其中end是可选的)来提取子字符串,start是起始索引(包含),end是结束索引(不包含)。
  • 负索引:使用负索引可以从字符串的末尾开始计数。
  • 步长:通过[start:end:step]可以指定步长,实现跳过某些字符的切片。步长为负数时,可以实现字符串的倒序输出。
  • 倒序输出:使用[::-1]可以倒序输出整个字符串
# 字符串切片    
s = 'Python Programming'    
print(s[0:5])  # 输出: Pytho,从索引0到索引4(不包括5)  
print(s[7:14]) # 输出: Program,从索引7到索引13(不包括14)  
print(s[-4:])  # 输出: ming,从倒数第四个字符到字符串末尾

# 倒序输出字符串
print(s[::-1]) # 输出:gnimmargorP nohtyP

3.3 字符串查找与替换

关键点

  • 查找
    • index(sub[, start[, end]]):返回子串sub在字符串中首次出现的索引,从索引startend范围内搜索。如果未找到,则抛出ValueError
    • rindex(sub[, start[, end]]):与index类似,但从字符串末尾开始搜索。
    • find(sub[, start[, end]]):返回子串sub在字符串中首次出现的索引,如果未找到则返回-1。
    • rfind(sub[, start[, end]]):与find类似,但从字符串末尾开始搜索。
  • 替换
    • replace(old, new[, count]):将字符串中的old子串替换为new子串,可选参数count指定替换的最大次数。如果不指定count,则替换所有匹配的子串。

查找

print("=========================查找=================================")
s = "我是一个好人一个好男人"
# index  打印字符串中第一次出现查找的 字符串的 索引,若不存在,则会报错
print(s.index("一))  # 2
# rindex 从后往前查找,但索引还是从前开始排列
print(s.rindex("一"))  # 3
# find 打印字符串中第一次出现查找的 字符串的 索引,若不存在,则会返回  -1
print(s.find("好人"))  # 4
print(s.find("好人0"))  # -1
 #rfind 从后往前查找,但索引还是从前开始排列
print(s.rfind("人"))  # 10
print(s.rfind("男人0"))  # -1

替换

print("=========================替换=================================")
s = "hello world"
print(s.replace("w", "123")) # "hello 123orld"

3.4 字符串分割与连接

关键点

  • 分割
    • split([sep[, maxsplit]]):根据指定的分隔符sep分割字符串,可选参数maxsplit指定分割的最大次数。如果不指定sep,则默认以任何空白字符(如空格、换行符等)作为分隔符。
  • 连接
    • join(iterable):是一个字符串方法,但它被用在连接操作上。它接受一个可迭代对象(如列表、元组、生成器等),其中包含要连接的字符串元素,并使用调用该方法的字符串(作为分隔符)将这些元素连接成一个新的字符串。

分割

print("=========================字符串分隔符=================================")
s = "hello world"
print(s.split())  # 输出: ['hello', 'world'],默认以空白字符分割
print(s.split('o'))  # 输出: ['hell', ' w', 'rld'],以字符 'o' 分割
print(s.split('l', 1))  # 输出: ['he', 'lo world'],以字符 'l' 分割,分割一次
print(s.split('x'))  # 输出: ['hello world'],分割结果为原始字符串的一个元素,因为找不到分隔符 'x'

连接

print("=========================连接=================================")
# 连接列表中的字符串:
mylist = ["Hello", "World", "Python"]
result = " ".join(mylist)
print(result)  # 输出: Hello World Python
# 在这个例子中," ".join(mylist) 将列表 mylist 中的元素用空格连接起来形成一个新的字符串。

# 连接元组中的字符串:
mytuple = ("apple", "banana", "cherry")
result = ", ".join(mytuple)
print(result)  # 输出: apple, banana, cherry
# 在这个例子中,", ".join(mytuple) 将元组 mytuple 中的元素用逗号和空格连接起来形成一个新的字符串。

# 连接生成器表达式中的字符串:
generator = (str(num) for num in range(1, 6))
result = "-".join(generator)
print(result)  # 输出: 1-2-3-4-5

3.5 字符串清楚前后字符

  • 内容:演示了如何使用strip()方法去除字符串两侧(开头和结尾)的空白字符或自定义的特定字符。
  • 关键点strip()方法默认去除空白字符,但也可以指定其他字符。
print("=========================擦除前后字符=================================")
s = "           我爱我家               "
# 用于去除字符串两侧(开头和结尾)指定的字符(默认为空白字符)。 也可以自定义清楚的符号,比如strip("*")
print(s.strip()) # 我爱我家

3.6 检查字符串

  • 内容:展示了如何检查字符串是否只包含数字(isdigit())或是否由字母和数字组成(isalnum())。
  • 关键点isdigit()检查数字字符,isalnum()检查字母和数字的组合。
print("=========================检查字符串=================================")
s2 = "123abc"
# 检查字符串是否只包含数字字符
print(s2.isdigit())   # False
# 用于检查字符串是否由字母和数字组成,且至少有一个字符
print(s2.isalnum())

3.7 字符串填充

  • 内容:演示了如何对字符串进行填充,包括居中填充(center())、左填充(ljust())、右填充(rjust())以及使用零进行右填充(zfill())。
  • 关键点center()ljust()rjust()zfill()方法提供了灵活的字符串格式化选项。
print("=========================填充=================================")
s1 = "许老板"
# 将字符串指定长度居中填充,可以指定填充符号(单字符)
print(s1.center(20, "*"))
# 填充在最左边
print(s1.ljust(20, "*"))
# 填充在最右边
print(s1.rjust(20, "*"))
# 填充在最右边,但是填充的是0
print(s1.zfill(20))

3.8 编码和解码

  • 内容:说明了如何将字符串编码为字节序列(encode())以及如何将字节序列解码回字符串(decode())。
  • 关键点:编码和解码必须使用相同的编码格式,如UTF-8或GBK。
print("=========================解码和编码=================================")
s = "我爱我家"
# 对字符串进行编码 可以指定编码格式  utf8 / gbk   注意,解码和编码的格式需要一致
print(s.encode("utf8"))
print(s.encode("utf8").decode("utf8"))

3.9 判断开头和结尾字符

  • 内容:展示了如何使用startswith()endswith()方法检查字符串是否以特定子串开头或结尾。
  • 关键点startswith()endswith()方法提供了检查字符串边界的简便方式。
print("=========================判断开头和结尾=================================")
s = "我爱我家"
# 判断字符串是否以。。。开头
print(s.startswith("我"))  # True
# 判断字符串是否以。。。结尾
print(s.startswith("家0"))  # False

3.10 大小写转换

  • 内容:演示了字符串的大小写转换方法,包括首字母大写(capitalize())、全部大写(upper())、全部小写(lower())、每个单词首字母大写(title())以及大小写反转(swapcase())。
  • 关键点:这些方法提供了灵活的文本处理选项,以满足不同的显示和格式化需求。
print("=========================大小写转换=================================")
c = "aBcd eFg"
# 字符串的第一个字母大写
print(c.capitalize())  # Abcd efg
# 字符串全部大写
print(c.upper())  # ABCD EFG
# 字符串全部小写
print(c.lower())  # abcd efg
# 字符串的 每个单词 首字母大写
print(c.title())  # Abcd Efg
# 字符串的大小写转换  大变小,小变大
print(c.swapcase())  # AbCD EfG

3.11 字符串出现次数计算

  • 内容:展示了如何使用count()方法计算字符串中子串出现的次数,包括在指定范围内的计数。
  • 关键点count()方法提供了灵活的方式来确定子串在字符串中出现的次数,可以指定搜索范围。
print("=========================计算=================================")
s = "我是一个好人,我认真的"
# count 返回查找的字符串出现了多少次,可以指定范围
print(s.count("我")) # 2
print(s.count("我", 0, 6)) # 1

;