跳转到内容

Python 字符串切片

来自代码酷

Python字符串切片[编辑 | 编辑源代码]

字符串切片是Python中一种强大的操作,允许开发者从字符串中提取特定部分。通过指定起始索引、结束索引和步长,可以灵活地截取子字符串。本教程将详细介绍其语法、参数规则及实际应用场景。

基本语法[编辑 | 编辑源代码]

Python字符串切片的语法如下:

  
substring = string[start:stop:step]
  • start:起始索引(包含),默认为0。
  • stop:结束索引(不包含),默认为字符串长度。
  • step:步长(间隔),默认为1。

参数规则[编辑 | 编辑源代码]

1. 索引从0开始,负数表示从末尾倒数(如-1是最后一个字符)。 2. 若省略参数,则使用默认值。 3. 步长为正时从左向右切片,为负时从右向左切片。

基础示例[编辑 | 编辑源代码]

正向切片[编辑 | 编辑源代码]

  
text = "Python Programming"  
print(text[0:6])    # 输出: Python  
print(text[7:18])   # 输出: Programming  
print(text[:6])     # 省略start,输出: Python  
print(text[7:])     # 省略stop,输出: Programming

负索引切片[编辑 | 编辑源代码]

  
text = "Hello World"  
print(text[-5:])    # 输出: World  
print(text[-10:-6]) # 输出: ello

步长控制[编辑 | 编辑源代码]

  
text = "ABCDEFGH"  
print(text[1:7:2])  # 从索引1到7,步长2,输出: BDF  
print(text[::-1])   # 反转字符串,输出: HGFEDCBA

高级应用[编辑 | 编辑源代码]

字符串反转[编辑 | 编辑源代码]

利用负步长快速反转字符串:

  
text = "algorithm"  
reversed_text = text[::-1]  
print(reversed_text)  # 输出: mhtirogla

提取规律性子串[编辑 | 编辑源代码]

例如,提取字符串中所有偶数位字符:

  
data = "a1b2c3d4"  
even_chars = data[1::2]  
print(even_chars)  # 输出: 1234

边界条件与错误处理[编辑 | 编辑源代码]

  • 索引越界时,Python会自动截取到字符串边界:
  
text = "Python"  
print(text[2:100])  # 输出: thon
  • 若start ≥ stop且步长为正,返回空字符串。

实际案例[编辑 | 编辑源代码]

文件扩展名提取[编辑 | 编辑源代码]

  
filename = "report.pdf"  
extension = filename[-3:]  
print(extension)  # 输出: pdf

数据清洗[编辑 | 编辑源代码]

从混杂数据中提取数字部分:

  
raw_data = "ID:12345;Name:Alice"  
id_number = raw_data[3:8]  
print(id_number)  # 输出: 12345

可视化索引规则[编辑 | 编辑源代码]

flowchart LR A["字符串: 'Python'"] B["索引: 0:P, 1:y, 2:t, 3:h, 4:o, 5:n"] C["text[1:4] → 'yth'"] A --> B --> C

数学表达[编辑 | 编辑源代码]

对于字符串S=s0s1...sn1,切片S[i:j:k]定义为: {spp=i+mk,0m<jik,ip<j}

总结[编辑 | 编辑源代码]

字符串切片是Python中高效处理文本的基础操作,通过调整参数可实现复杂的子串提取逻辑。熟练掌握切片技巧能大幅提升代码简洁性和可读性。