Python 字符串操作完全指南:从定义到高级技巧
字符串是 Python 中最常用的数据类型之一掌握字符串操作是 Python 编程的基础。本文将通过清晰的章节结构和丰富的代码示例系统梳理 Python 字符串的定义、转义、格式化、索引、切片、遍历以及常用方法帮助读者构建完整的知识体系。1. 定义字符串的三种方式Python 中定义字符串非常灵活支持单引号、双引号和三引号三种方式不同方式适用于不同场景。1.1 单引号与双引号单引号和双引号在功能上完全等价可以交替使用来避免转义。当字符串内部包含单引号时外层用双引号包裹反之亦然。# 单引号定义 s1 Hello Python 双引号定义 s2 Hello Python 交替使用避免转义 s3 Its a good day # 内部有单引号外层用双引号 s4 他说你好 # 内部有双引号外层用单引号1.2 三引号三引号三个单引号或三个双引号用于定义多行字符串可以保留内部的换行和缩进格式。此外三引号还常用于编写文档字符串docstring对模块、类和函数进行说明。# 多行字符串保留格式 poem 静夜思 床前明月光 疑是地上霜。 举头望明月 低头思故乡。 文档字符串为函数添加说明 def greet(name): 向指定用户打招呼 return f你好{name} 文档字符串为类添加说明 class Student: 学生类用于管理学生信息 pass2. 转义字符转义字符用于在字符串中表示无法直接输入的特殊字符。Python 使用反斜杠\作为转义前缀。转义字符含义示例\n换行print(第一行\n第二行)\t制表符Tabprint(姓名\t年龄)\单引号作为普通字符It\s nice\双引号作为普通字符他说\你好\\\反斜杠本身C:\\Users\\Admin对于包含大量反斜杠的字符串如 Windows 文件路径、正则表达式可以使用原始字符串在引号前加r前缀让反斜杠保持原义# 普通字符串需要双重转义 path1 C:\\Users\\Admin\\Documents 原始字符串反斜杠保持原义推荐用于路径 path2 rC:\Users\Admin\Documents 正则表达式也常用原始字符串 import re pattern r\d{3}-\d{4} # 匹配 3位数字-4位数字3. 格式化字符串Python 提供了三种主流的字符串格式化方式从旧到新依次演进推荐优先使用 f-string。3.1 f-string推荐Python 3.6 引入在字符串前加f前缀用花括号直接嵌入变量或表达式简洁直观、性能最优。name 张三 age 25 score 92.5 嵌入变量 s f我叫{name}今年{age}岁 嵌入表达式 s f明年我就{age 1}岁了 控制格式 s f成绩{score:.1f}分 # 保留1位小数 → 成绩92.5分3.2 % 格式化传统方式沿用 C 语言的printf风格使用%占位符。name 李四 age 30 %s 表示字符串%d 表示整数 s 我叫%s今年%d岁 % (name, age) 单个变量可省略括号 s 欢迎你%s % name3.3 format() 方法使用花括号{}作为占位符通过format()方法填充比%方式更灵活。name 王五 age 28 按位置填充 s 我叫{}今年{}岁.format(name, age) 按索引填充 s 我叫{0}今年{1}岁{0}来自北京.format(name, age) 按关键字填充 s 我叫{n}今年{a}岁.format(nname, aage)4. 索引访问字符串中的字符字符串本质上是字符序列可以通过索引下标访问其中的每个字符。Python 支持正向索引和反向索引。s Hello Python length len(s) # 获取字符串长度结果为 12 正向索引从 0 开始范围 [0, len(s)-1] print(s[0]) # H print(s[6]) # P 反向索引从 -1 开始范围 [-len(s), -1] print(s[-1]) # n print(s[-12]) # H等价于 s[0]索引越界会抛出IndexError使用时务必确保索引在合法范围内。5. 切片提取子字符串切片是 Python 字符串操作中最强大的功能之一用于从字符串中提取指定范围的子串。基本语法为s[start:stop:step]start起始索引包含默认为 0stop结束索引不包含默认为字符串末尾step步长默认为 1s Hello Python 基本切片 print(s[0:5]) # Hello索引0到4不含5 print(s[6:12]) # Python 省略写法 print(s[6:]) # Python从索引6到末尾 print(s[:5]) # Hello从开头到索引4 print(s[:]) # Hello Python完整复制 使用步长 print(s[::2]) # HloPto每隔一个字符取一个 倒序切片 print(s[::-1]) # nohtyP olleH整体反转 print(s[3:1:-1]) # ll从索引3到索引2反向步进6. 遍历字符串Python 提供了两种常见的字符串遍历方式适用于不同的场景。6.1 直接遍历字符使用for e in s遍历字符串中的每个字符语法简洁适合大多数场景。s Python for ch in s: print(ch, end ) # 输出P y t h o n6.2 通过索引遍历使用for i in range(len(s))遍历索引在需要同时操作索引和字符时更加方便。s Python for i in range(len(s)): print(f索引{i}的字符是{s[i]}) 输出 索引0的字符是P 索引1的字符是y ...6.3 同时获取索引和字符推荐使用enumerate()一行代码同时拿到索引和对应字符s Python for i, ch in enumerate(s): print(f索引{i} → {ch})7. 常用操作方法Python 字符串提供了丰富的内置方法下面按照功能分类逐一介绍。7.1 查找与判断s Hello PythonWelcome to Python World find() —— 返回第一个匹配索引找不到返回 -1 print(s.find(Python)) # 6 print(s.find(Java)) # -1 index() —— 返回第一个匹配索引找不到抛出 ValueError print(s.index(Python)) # 6 print(s.index(Java)) # 报错ValueError count() —— 统计子串出现次数 print(s.count(Python)) # 2 print(s.count(o)) # 5 startswith() —— 判断是否以指定前缀开头 print(s.startswith(Hello)) # True endswith() —— 判断是否以指定后缀结尾 print(s.endswith(World)) # True7.2 大小写转换s hello python world print(s.upper()) # HELLO PYTHON WORLD 全大写 print(s.lower()) # hello python world 全小写 print(s.title()) # Hello Python World 每个单词首字母大写 print(s.capitalize()) # Hello python world 整句首字母大写 print(s.swapcase()) # HELLO PYTHON WORLD 大小写翻转此时全小写→全大写7.3 对齐与填充s Python center(width, fillchar) —— 居中可指定填充字符默认空格 print(s.center(12, *)) # Python ljust(width, fillchar) —— 左对齐 print(s.ljust(12, -)) # Python------ rjust(width, fillchar) —— 右对齐 print(s.rjust(12, -)) # ------Python zfill(width) —— 右对齐左侧填充 0 print(s.zfill(10)) # 0000Python7.4 修剪与替换s Hello Python strip() —— 剔除两端空白可指定字符默认空格 print(s.strip()) # Hello Python lstrip() —— 剔除左侧空白removeprefix() 删除指定前缀Python 3.9 print(s.lstrip()) # Hello Python print(prefix_data.removeprefix(prefix_)) # data rstrip() —— 剔除右侧空白removesuffix() 删除指定后缀Python 3.9 print(s.rstrip()) # Hello Python print(file.txt.removesuffix(.txt)) # file replace(old, new) —— 替换子串 text I like JavaJava is good print(text.replace(Java, Python)) # I like PythonPython is good7.5 拼接与分割# join() —— 将可迭代对象用指定字符串拼接 words [Python, Java, Go] result 、.join(words) print(result) # Python、Java、Go split() —— 按指定字符切割返回列表 s apple,banana,orange fruits s.split(,) print(fruits) # [apple, banana, orange]7.6 编码与解码字符串与字节流之间的转换在网络传输和文件读写中非常常见。# encode() —— 将字符串编码为字节流 text hello world byte_data text.encode(utf8) print(byte_data) # bhello world print(type(byte_data)) # class bytes decode() —— 将字节流解码为字符串 decoded_text byte_data.decode(utf8) print(decoded_text) # hello world print(type(decoded_text)) # class str7.7 字符类型判断is 系列以下方法返回布尔值用于判断字符串的字符类型print(abc.isalpha()) # True 是否全为字母 print(123.isdigit()) # True 是否全为数字 print(abc123.isalnum()) # True 是否全为字母或数字 print(hello.islower()) # True 是否全为小写 print(HELLO.isupper()) # True 是否全为大写 print(Hello World.istitle()) # True 是否每个单词首字母大写总结本文从定义、转义、格式化、索引、切片、遍历、常用方法七个维度系统梳理了 Python 字符串的核心操作。其中切片语法和丰富的内置方法是 Python 字符串处理的亮点熟练掌握后可以大幅提升编码效率。建议读者将本文中的代码示例亲自运行一遍加深理解和记忆。