
前言为什么字符串操作如此重要在Python的世界里字符串String就像空气一样无处不在。无论是处理用户输入、读取文件内容、还是与数据库交互字符串都是我们最常打交道的“老朋友”。掌握字符串操作就等于掌握了Python编程的“半壁江山”今天我们就来一场Python字符串操作知识大扫荡用最通俗易懂、生动有趣的方式带你从零基础到进阶彻底搞懂字符串的所有核心操作 1. 字符串定义三种引号各显神通Python中的字符串可以用三种引号来定义每种都有其独特的用途1.1 单引号 vs 双引号单引号内容和双引号内容在功能上完全等价但它们可以交替嵌套使用避免转义字符的麻烦# 单引号定义 name Python小王子 双引号定义 greeting Hello, World! 交替嵌套 - 无需转义 message1 Im learning Python # 双引号包裹单引号 message2 他说Python真有趣 # 单引号包裹双引号1.2 三引号多行字符串的“瑞士军刀”三引号内容或内容是Python的多行字符串神器# 多行字符串 poem 床前明月光 疑是地上霜。 举头望明月 低头思故乡。 函数文档注释Docstring def calculate_sum(a, b): 计算两个数的和 参数 a -- 第一个数字 b -- 第二个数字 返回 两个数字的和 return a b 类注释 class User: 用户类用于管理用户信息 def init(self, name): self.name name 2. 转义字符让特殊字符“现出原形”有些字符在字符串中有特殊含义比如引号、换行符等。这时候就需要转义字符来帮忙了2.1 基础转义符号# 常用转义字符 print(Hello\nWorld) # \n 换行符 print(姓名\t年龄) # \t 制表符Tab print(I\m Python) # \ 输出单引号 print(他说\你好\) # \ 输出双引号 print(路径C:\\Users) # \\ 输出反斜杠 输出结果 Hello World 姓名 年龄 Im Python 他说你好 路径C:\Users2.2 原始字符串Windows路径的“救星”在Windows系统中文件路径包含大量反斜杠使用原始字符串可以忽略所有转义# 普通字符串 - 需要双反斜杠 path1 C:\\Users\\Administrator\\Documents\\file.txt 原始字符串 - 直接写路径 path2 rC:\Users\Administrator\Documents\file.txt print(path1) # C:\Users\Administrator\Documents\file.txt print(path2) # C:\Users\Administrator\Documents\file.txt 两者输出相同但原始字符串写起来更直观 3. 字符串格式化三种写法总有一款适合你把变量插入到字符串中Python提供了三种格式化方式3.1 f-string推荐Python 3.6最简洁、最直观的写法在字符串前加f变量用{}包裹name 小明 age 18 score 95.5 f-string 基本用法 info f{name}今年{age}岁考试成绩{score}分 print(info) # 小明今年18岁考试成绩95.5分 表达式计算 result f10 20 {10 20} print(result) # 10 20 30 格式化数字 pi 3.1415926 formatted f圆周率{pi:.2f} # 保留2位小数 print(formatted) # 圆周率3.143.2 %占位符传统写法类似C语言的格式化方式使用%s、%d、%f等占位符name 小红 age 20 height 1.65 %s 字符串%d 整数%f 浮点数 info %s今年%d岁身高%.2f米 % (name, age, height) print(info) # 小红今年20岁身高1.65米3.3 format()函数过渡方案比%占位符更灵活但不如f-string简洁name 小刚 age 22 city 北京 位置参数 info1 {}来自{}今年{}岁.format(name, city, age) print(info1) # 小刚来自北京今年22岁 关键字参数 info2 {name}来自{city}今年{age}岁.format(namename, citycity, ageage) print(info2) # 小刚来自北京今年22岁 小贴士新项目强烈推荐使用f-string代码更简洁、性能更好 4. 索引与下标精准定位每一个字符字符串中的每个字符都有自己唯一的“身份证号”——索引下标。4.1 获取字符串长度text Python编程 length len(text) print(f{text}的长度是{length}) # Python编程的长度是64.2 正向索引从0开始text Hello print(text[0]) # H - 第一个字符 print(text[1]) # e - 第二个字符 print(text[4]) # o - 最后一个字符 # print(text[5]) # ❌ 错误索引越界4.3 负值索引从-1开始负数索引从字符串末尾开始计数-1表示最后一个字符text Python print(text[-1]) # n - 最后一个字符 print(text[-2]) # o - 倒数第二个字符 print(text[-6]) # P - 第一个字符✂️ 5. 切片操作字符串的“精准裁剪术”切片Slicing可以截取字符串的任意部分语法[start:stop:step]5.1 切片基本规则start起始位置包含stop结束位置不包含step步长默认1text ABCDEFGHIJ 基本切片 print(text[2:5]) # CDE - 索引2到4 print(text[:5]) # ABCDE - 从开头到索引4 print(text[5:]) # FGHIJ - 从索引5到末尾 print(text[::2]) # ACEGI - 每隔一个字符取一个 负值切片 print(text[-5:-2]) # FGH - 倒数第5到倒数第3 print(text[-3:]) # HIJ - 最后三个字符5.2 字符串反转的“魔法”使用[::-1]可以轻松实现字符串反转text Python reversed_text text[::-1] print(f{text} 反转后是{reversed_text}) # Python 反转后是nohtyP 实战应用判断回文字符串 def is_palindrome(s): return s s[::-1] print(is_palindrome(level)) # True print(is_palindrome(python)) # False 6. 字符串遍历两种方式任君选择6.1 直接遍历字符推荐text Hello print(方式1直接遍历字符) for char in text: print(char, end ) # H e l l o6.2 通过索引遍历text World print(\n方式2通过索引遍历) for i in range(len(text)): print(f索引{i}的字符是{text[i]})️ 7. 字符串常用内置方法大全Python为字符串提供了丰富的内置方法让我们来看看这些“瑞士军刀”般的工具7.1 长度与查找text Python编程很有趣Python很强大 len() - 获取长度 print(f长度{len(text)}) # 长度17 find() - 查找子串返回索引找不到返回-1 print(fPython首次出现位置{text.find(Python)}) # 0 print(fJava首次出现位置{text.find(Java)}) # -1 rfind() - 从右侧开始查找 print(fPython最后出现位置{text.rfind(Python)}) # 8 index() - 类似find但找不到会报错 print(f编程首次出现位置{text.index(编程)}) # 6 print(text.index(C)) # ❌ ValueError7.2 计数与大小写转换text Hello World! hello python count() - 统计出现次数 print(fo出现次数{text.count(o)}) # 3 upper() - 全部转大写 print(text.upper()) # HELLO WORLD! HELLO PYTHON lower() - 全部转小写 print(text.lower()) # hello world! hello python title() - 每个单词首字母大写 print(text.title()) # Hello World! Hello Python capitalize() - 仅首字母大写 print(text.capitalize()) # Hello world! hello python swapcase() - 大小写互换 print(PyThOn.swapcase()) # pYtHoN7.3 对齐与填充text Python center() - 居中对齐 print(f|{text.center(10)}|) # | Python | print(f|{text.center(10, *)}|) # |Python| ljust() - 左对齐 print(f|{text.ljust(10)}|) # |Python | rjust() - 右对齐 print(f|{text.rjust(10)}|) # | Python| zfill() - 右侧对齐左侧补0 print(f|{42.zfill(5)}|) # |00042|7.4 首尾判断与删除# startswith() / endswith() - 首尾判断 filename document.pdf print(filename.startswith(doc)) # True print(filename.endswith(.pdf)) # True strip() - 删除首尾空白字符 text Python print(f|{text.strip()}|) # |Python| 删除指定字符 text2 Python print(text2.strip(*)) # Python lstrip() / rstrip() - 删除左侧/右侧 text3 Python print(f|{text3.lstrip()}|) # |Python | print(f|{text3.rstrip()}|) # | Python| removeprefix() / removesuffix() - Python 3.9 text4 HelloWorld print(text4.removeprefix(Hello)) # World print(text4.removesuffix(World)) # Hello7.5 拼接、切割、替换# join() - 拼接字符串列表 words [Python, 是, 一门, 强大的, 语言] sentence .join(words) print(sentence) # Python是一门强大的语言 用逗号连接 csv_line ,.join([Alice, 25, 北京]) print(csv_line) # Alice,25,北京 split() - 切割字符串 text apple,banana,orange fruits text.split(,) print(fruits) # [apple, banana, orange] 按空白字符切割默认 sentence Python 是一门 强大的 语言 words sentence.split() print(words) # [Python, 是, 一门, 强大的, 语言] replace() - 替换子串 text 我喜欢Java但更喜欢Python new_text text.replace(Java, 编程) print(new_text) # 我喜欢编程但更喜欢Python7.6 编码与解码# 编码字符串 → 字节 text 你好世界 encoded text.encode(utf-8) print(f编码后{encoded}) # b\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c 解码字节 → 字符串 decoded encoded.decode(utf-8) print(f解码后{decoded}) # 你好世界 不同编码 gbk_encoded text.encode(gbk) print(fGBK编码{gbk_encoded})7.7 判断类方法# isalpha() - 是否全是字母 print(Python.isalpha()) # True print(Python3.isalpha()) # False isdigit() - 是否全是数字 print(123.isdigit()) # True print(12.3.isdigit()) # False isalnum() - 是否只包含字母和数字 print(Python3.isalnum()) # True print(Python_3.isalnum()) # False包含下划线 isspace() - 是否全是空白字符 print( .isspace()) # True print( a .isspace()) # False isupper() / islower() - 是否全大写/全小写 print(PYTHON.isupper()) # True print(python.islower()) # True 实战演练综合应用案例让我们通过几个实际案例巩固所学知识案例1用户输入验证def validate_username(username): 验证用户名是否合法 if not username: return 用户名不能为空 if len(username) 3 or len(username) 20: return 用户名长度需在3-20个字符之间 if not username.isalnum(): return 用户名只能包含字母和数字 return 用户名验证通过 测试 print(validate_username(Alice123)) # 用户名验证通过 print(validate_username(Alice_123)) # 用户名只能包含字母和数字 print(validate_username(ab