在 Python 中,字符串的“截取”操作通常称为 切片(Slicing),Python 提供了非常强大且简洁的切片语法,让你可以轻松地获取字符串的子串。

核心语法
切片的基本语法是:
string[start:end:step]
string: 你要操作的原始字符串。start: 起始索引(包含),如果省略,默认为0。end: 结束索引(不包含),如果省略,默认为字符串的长度。step: 步长,即每次选取元素后移动的位数,如果省略,默认为1。
基本用法示例
假设我们有一个字符串 s = "Hello, Python!",索引从 0 开始:
H e l l o , [space] P y t h o n !
0 1 2 3 4 5 6 7 8 9 10 11 12 13
获取单个字符
通过指定一个索引来获取单个字符,这可以看作是长度为 1 的切片。
s = "Hello, Python!" # 获取第一个字符 print(s[0]) # 输出: H # 获取索引为 7 的字符 print(s[7]) # 输出: P
获取子串(最常用)
只指定 start 和 end,步长为默认的 1。

s = "Hello, Python!" # 从索引 0 到 5 (不包含 5) print(s[0:5]) # 输出: Hello # 从索引 7 到 13 (不包含 13) print(s[7:13]) # 输出: Python # 从索引 0 到 5,可以省略 0 print(s[:5]) # 输出: Hello # 从索引 7 到末尾,可以省略 13 print(s[7:]) # 输出: Python!
关键点:结束索引 end 是不包含的! 这和很多编程语言(如 Java、C++)的 substring 方法是一致的。
使用负数索引
Python 支持负数索引,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。
s = "Hello, Python!" # 获取最后 6 个字符 print(s[-6:]) # 输出: Python! # 获取从倒数第 6 个字符到倒数第 1 个字符 (不包含最后一个) # -6 是 'P', -1 是 '!', 结束索引不包含,所以只到 'n' print(s[-6:-1]) # 输出: Python # 获取除了最后一个字符以外的所有字符 print(s[:-1]) # 输出: Hello, Python
使用步长
步长 step 可以让你跳过某些字符,实现隔位选取或反向选取。
s = "0123456789" # 每隔一个字符取一个 (从索引 0 开始) print(s[::2]) # 输出: 02468 # 每隔两个字符取一个 (从索引 1 开始) print(s[1::3]) # 输出: 147 # 反转字符串 (步长为 -1) print(s[::-1]) # 输出: 9876543210
常见场景与技巧
获取字符串的前 N 个字符
s = "Hello, Python!" n = 5 print(s[:n]) # 输出: Hello
获取字符串的后 N 个字符
使用负数索引是最简单的方法。

s = "Hello, Python!" n = 6 print(s[-n:]) # 输出: Python!
去掉字符串的首字符或尾字符
s = "Hello, Python!" # 去掉首字符 print(s[1:]) # 输出: ello, Python! # 去掉尾字符 print(s[:-1]) # 输出: Hello, Python
检查字符串是否以某个子串开头或结尾
虽然这不是“截取”,但这是与字符串处理相关的常见操作。
s = "Hello, Python!"
# 检查是否以 "Hello" 开头
if s.startswith("Hello"):
print("Yes, it starts with 'Hello'.")
# 检查是否以 "Python!"
if s.endswith("Python!"):
print("Yes, it ends with 'Python!'.")
重要提示:字符串是不可变的
在 Python 中,字符串是 不可变(immutable) 的,这意味着所有切片操作都不会修改原始字符串,而是会返回一个新的字符串。
s = "Hello, Python!" new_s = s[7:] # new_s 指向一个新创建的字符串 "Python!" print(s) # 原始字符串 s 保持不变 # 输出: Hello, Python! print(new_s) # 输出: Python!
| 操作 | 语法 | 示例 (s = "Hello, Python!") |
结果 |
|---|---|---|---|
| 获取单个字符 | s[index] |
s[0] |
'H' |
| 获取子串 | s[start:end] |
s[7:13] |
'Python' |
| 从头开始切片 | s[:end] |
s[:5] |
'Hello' |
| 切片到末尾 | s[start:] |
s[7:] |
'Python!' |
| 使用负索引 | s[-start:-end] |
s[-6:-1] |
'Python' |
| 反转字符串 | s[::-1] |
s[::-1] |
'!nohtyP ,olleH' |
| 获取后 N 个字符 | s[-n:] |
s[-6:] |
'Python!' |
掌握 Python 的切片语法是高效处理字符串的关键,它简洁、强大,是 Python 语言的一大特色。
