在 Python 编程中字符串是最常用的数据类型之一无论是数据清洗、文本处理还是日常开发中的日志解析、参数格式化都离不开字符串的查找与替换操作。本文将系统梳理 Python 中字符串查找、替换的核心方法、使用场景、区别与实战技巧从基础用法到高级应用带你彻底掌握 Python 字符串处理的核心技能。一、字符串查找操作字符串查找的核心需求判断子串是否存在、获取子串的位置、统计子串出现次数。Python 提供了 4 个内置方法in关键字、find()、index()、count()适用场景各不相同。1.1 基础判断in 关键字源码分享网https://svipm.com.cn描述上千款各行各业的源码最简单的查找方式仅判断子串是否存在返回布尔值True/False。语法python运行子串 in 原字符串示例python运行text Hello Python, Python is fun! # 判断是否包含Python print(Python in text) # 输出True # 判断是否包含Java print(Java in text) # 输出False适用场景只需要知道子串是否存在不需要位置信息。1.2 获取位置find () 方法find()用于查找子串第一次出现的起始索引如果找不到返回-1不会报错。语法python运行str.find(sub, start0, endlen(str))sub要查找的子串start查找起始索引可选默认 0end查找结束索引可选默认字符串末尾示例python运行text Hello Python, Python is fun! # 查找Python第一次出现的索引 print(text.find(Python)) # 输出6 # 从索引10开始查找 print(text.find(Python, 10)) # 输出14 # 查找不存在的子串 print(text.find(Java)) # 输出-11.3 获取位置index () 方法index()用法和find()几乎一致唯一区别找不到子串时会抛出ValueError异常。示例python运行text Hello Python # 正常查找 print(text.index(Python)) # 输出6 # 查找不存在的子串会报错 # print(text.index(Java)) # 报错ValueError: substring not found适用场景确定子串一定存在需要强制校验时使用。1.4 统计次数count () 方法统计子串在原字符串中出现的总次数找不到返回0。语法python运行str.count(sub, start0, endlen(str))示例python运行text Hello Python, Python is fun! # 统计Python出现次数 print(text.count(Python)) # 输出2 # 统计不存在的子串 print(text.count(Java)) # 输出01.5 查找方法总结表格方法功能找不到返回值是否抛异常in关键字判断子串是否存在False否find()获取子串第一次出现的索引-1否index()获取子串第一次出现的索引无是count()统计子串出现次数0否二、字符串替换操作字符串替换的核心需求将指定子串替换为新内容Python 提供replace()方法配合正则表达式可实现高级替换。2.1 基础替换replace () 方法replace()是 Python 字符串替换的基础核心方法支持指定替换次数。语法python运行str.replace(old, new, count-1)old要被替换的旧子串new替换后的新子串count替换次数可选默认-1表示替换所有匹配项示例python运行text Hello Python, Python is fun! # 替换所有Python为Java new_text1 text.replace(Python, Java) print(new_text1) # 输出Hello Java, Java is fun! # 只替换第1次出现的Python new_text2 text.replace(Python, Java, 1) print(new_text2) # 输出Hello Java, Python is fun!注意Python 字符串是不可变类型replace()不会修改原字符串而是返回一个新字符串。2.2 高级替换正则表达式 re.sub ()当需要模糊匹配、模式替换如替换所有数字、替换特殊字符、批量替换多规则时replace()无法满足需求需要使用re模块的sub()方法。语法python运行re.sub(pattern, repl, string, count0)实战示例python运行import re text Python3: 123, Java8: 456, C: 789 # 1. 替换所有数字为* new_text1 re.sub(r\d, *, text) print(new_text1) # 输出Python3: *, Java8: *, C: * # 2. 替换所有英文单词为语言 new_text2 re.sub(r[A-Za-z], 语言, text) print(new_text2) # 输出语言3: 123, 语言8: 456, : 789适用场景复杂文本清洗、批量规则替换、模糊匹配替换。三、实战案例字符串查找 替换综合应用结合日常开发场景演示两个高频实用案例案例 1敏感词过滤python运行# 原始文本 content 这家店的垃圾食品太难吃了服务也很差 # 敏感词库 sensitive_words [垃圾, 很差] # 批量替换敏感词 for word in sensitive_words: content content.replace(word, **len(word)) print(content) # 输出这家店的**食品太难吃了服务也**案例 2日志关键字提取与格式化python运行log ERROR: 连接数据库失败IP:192.168.1.1端口:3306 # 1. 查找关键字位置 if ERROR in log: print(发现错误日志) # 2. 替换敏感信息 new_log log.replace(192.168.1.1, ***.***.*.*) print(new_log) # 输出ERROR: 连接数据库失败IP:***.***.*.*端口:3306四、避坑指南字符串不可变所有查找 / 替换方法都不会修改原字符串必须用新变量接收返回值。大小写敏感Python 默认区分大小写Python和python是不同子串。忽略大小写方案先转小写 / 大写再处理。python运行text Hello Python print(text.lower().find(python)) # 输出6index () 慎用不确定子串是否存在时优先用find()避免程序崩溃。五、总结简单查找用in/find()需要强校验用index()统计次数用count()基础替换用replace()高级模式替换用re.sub()字符串是不可变类型操作后必须接收返回值实际开发中查找 替换组合使用可完成绝大多数文本处理需求。本文从基础到实战全面讲解了 Python 字符串的查找与替换操作希望能帮助大家在开发中高效处理字符串问题