Skip to content

字符串切片

在 Python 中,字符串切片(slicing)是一种强大的操作方式,它允许你通过指定索引范围来提取字符串的子字符串。

切片操作不仅仅适用于字符串,还适用于列表、元组等序列类型。

基本语法

基本语法:

python
string[start:stop:step]
  • start:切片开始的索引(包含)。如果不指定,默认为 0
  • stop:切片结束的索引(不包含)。如果不指定,默认为字符串的长度。
  • step:切片的步长,默认为 1。如果设置为负数,可以进行反向切片。

示例讲解

基本切片

python
text = "Hello, World!"

# 提取 "Hello"
print(text[0:5])  # 输出: Hello

# 提取 "World"
print(text[7:12])  # 输出: World

省略 startstop

python
text = "Hello, World!"

# 从开头到索引 4(不包括)
print(text[:5])  # 输出: Hello

# 从索引 7 到结尾
print(text[7:])  # 输出: World!

# 提取整个字符串
print(text[:])  # 输出: Hello, World!

使用负索引

在 Python 中,负索引用于从字符串的末尾开始计数。

python
text = "Hello, World!"

# 从倒数第 6 个字符开始到倒数第 2 个字符结束
print(text[-6:-1])  # 输出: World

步长

可以使用步长跳过字符。例如,步长为 2 表示每隔一个字符取一个字符。

python
text = "Hello, World!"

# 每隔一个字符取一个
print(text[::2])  # 输出: Hlo ol!

# 反向切片
print(text[::-1])  # 输出: !dlroW ,olleH

省略 startstopstep

如果省略所有参数,切片将返回整个字符串。

python
text = "Hello, World!"

# 返回整个字符串
print(text[:])  # 输出: Hello, World!

常见用法

反转字符串

python
text = "Python"
reversed_text = text[::-1]
print(reversed_text)  # 输出: nohtyP

提取特定部分

python
text = "abcdefg"

# 提取 "aceg"
print(text[::2])  # 输出: aceg

删除第一个和最后一个字符

python
text = "Hello, World!"
print(text[1:-1])  # 输出: ello, World

步长为负数的切片

当步长为负数时,start 必须大于 stop,否则将得到空字符串。

python
text = "abcdefgh"

# 反向提取 "gfed"
print(text[6:2:-1])  # 输出: gfed

总结

  • 切片 是从字符串中提取子字符串的一种方式,语法为 string[start:stop:step]
  • 正索引 从字符串的开头开始计数,负索引 从字符串的末尾开始计数。
  • 省略 startstop 参数时,切片默认从字符串的开始或结束进行操作。
  • 使用 步长 可以控制切片操作的步进大小,步长为负数时可以实现反向切片。