Skip to content

Python3 字符串操作详解

字符串是编程中非常重要且常用的数据类型,它是由字符组成的序列。在Python中,我们可以对字符串进行各种各样的操作,例如提取部分字符串(切片)、判断字符串中是否包含特定字符(成员检查)、将多个字符串组合在一起(连接)以及重复字符串等。 本教程将带你一步步了解这些基本且常用的字符串操作。

字符串切片 (Slicing):截取字符串片段

想象一下,你有一长串珠子(一个字符串),你想取出其中的一部分。这就是字符串切片的作用。我们可以使用索引来访问字符串中的单个字符,也可以使用切片来获取字符串的一部分。

python
s = "Hello"
print(s[1])  # 输出:e  (索引从0开始,所以 s[1] 是第二个字符)

切片运算符 [start:end]

[start:end] 允许我们从字符串中提取一个子字符串,也叫做切片。这个切片从索引 start 开始(包含 start 处的字符),到索引 end 结束(不包含 end 处的字符)。

python
s = "Hello"
print(s[1:3])  # 输出:el  (从索引1开始,到索引3之前结束)

省略索引

  • 如果省略 start,则默认从字符串的开头 (0) 开始。
  • 如果省略 end,则默认到字符串的末尾结束。
python
s = "Hello"
print(s[:3])   # 输出:Hel  (从开头到索引3之前结束)
print(s[3:])   # 输出:lo  (从索引3开始到末尾)
print(s[:])   # 输出:Hello (整个字符串)

负索引

Python 支持负索引,从字符串的末尾开始计数。例如,s[-1] 表示字符串的最后一个字符,s[-2] 表示倒数第二个字符。

python
s = "Hello"
print(s[-4:-2])  # 输出:el (等价于 s[1:3])

在这个例子中,-4 相当于 len(s) - 4 = 5 - 4 = 1,而 -2 相当于 len(s) - 2 = 5 - 2 = 3

步长 (Step)

切片运算符还允许指定步长,控制每次跳过多少个字符。 语法是 [start:end:step]

python
s = "Hello"
print(s[0:5:2])  # 输出:Hlo (从索引0到5,每隔一个字符取一个)

成员检查 (Membership):判断字符串包含关系

innot in 运算符用于检查一个字符串是否是另一个字符串的子字符串。

python
s = "Hello"
print("lo" in s)    # 输出:True
print("lp" not in s) # 输出:True

连接 (Concatenation):拼接字符串

使用 + 运算符可以将两个或多个字符串连接起来,创建一个新的字符串。

python
s1 = "Hello"
s2 = "Python"
print(s1 + s2)       # 输出:HelloPython
print(s1 + " World")  # 输出:Hello World

重复 (Repetition):重复字符串

使用 * 运算符可以将一个字符串重复多次。

python
s = "Hello"
print(s * 3)  # 输出:HelloHelloHello

字符串的不可变性

需要特别注意的是,Python中的字符串是不可变的。这意味着一旦创建了一个字符串,就不能直接修改它的内容。 所有的字符串操作,例如切片、连接等,实际上都是创建了一个新的字符串。

python
s = "Hello"
# s[0] = 'J'  # 尝试修改字符串会导致错误 (TypeError: 'str' object does not support item assignment)
s = "J" + s[1:] # 正确的做法是创建一个新的字符串
print(s) # 输出: Jello