在 Python 里,完成字符串替换通常有哪些做法?
考察说明
考查对 Python 字符串常用替换方法及其差异的掌握程度。
回答思路
- 【回答框架 1】字符串替换最常用的是 str.replace(old, new, count=-1) 方法,它会返回替换后的新字符串,原字符串不变,因为字符串是不可变对象。count 参数可限制替换次数,默认替换所有匹配项。
- 【回答框架 2】若需按正则表达式替换,可使用 re 模块的 re.sub(pattern, repl, string, count=0),它支持模式匹配,count 默认为 0 表示替换所有,返回新字符串。
- 【回答框架 3】此外还可通过 split 和 join 组合实现,例如用分隔符切分后再拼接,但效率较低且不推荐用于简单替换。对于大量替换,正则表达式预编译(re.compile)可提升性能。
- 【回答框架 4】若替换规则复杂或基于映射表,可考虑使用 str.translate 配合 str.maketrans 进行字符级映射,但多字符替换需谨慎处理。
- 【回答框架 5】选择哪种方式取决于具体场景:简单固定文本用 replace,模式匹配用 re.sub,字符映射用 translate。注意字符串不可变性,所有方法均返回新字符串。
- 【关键点 1】str.replace 适用于简单固定字符串替换,支持次数限制。
- 【关键点 2】re.sub 支持正则表达式,适用于模式匹配替换。
- 【关键点 3】translate 适合字符级映射,但对多字符替换有限制。
- 【关键点 4】所有替换方法都不修改原字符串,因为字符串不可变。
- 【易错点 1】误以为 replace 会修改原字符串,实际需重新赋值。
- 【易错点 2】将 re.sub 的 count 参数与 replace 混淆,count 为 0 时表示替换所有而非不替换。
- 【易错点 3】忽略正则表达式中特殊字符的转义,导致非预期结果。