杰瑞科技汇

Python如何截取substring?

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

Python如何截取substring?-图1
(图片来源网络,侵删)

核心语法

切片的基本语法是:

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

获取子串(最常用)

只指定 startend,步长为默认的 1

Python如何截取substring?-图2
(图片来源网络,侵删)
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 个字符

使用负数索引是最简单的方法。

Python如何截取substring?-图3
(图片来源网络,侵删)
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 语言的一大特色。

分享:
扫描分享到社交APP
上一篇
下一篇