Python 字符串 replace() 方法

Python replace() 语法

replace() 是 Python 字符串的一个方法,它可以使用另一个字符串来替换当前字符串的符合条件的子串。

语法:

str.replace(old, new, count=-1)

说明:

replace() 方法接收以下 3 个参数。

  • old(必选):表示原字符串中的子串。
  • new(必选):表示使用哪个字符串来代替。
  • count(可选,默认值:-1):替换的次数。默认值为 -1,也就是全部替换。

str.replace(old, new) 其实很好理解,它表示先匹配出字符串中符合的 old 子串,然后再使用 new 来替换这些子串。

注意:

  • replace() 方法会严格区分大小写。
  • 如果 old 子串在原字符串中不存在,则 replace() 会返回原字符串的副本。

Python replace() 摘要

使用频率
修改原字符串
官方文档 查看
相关方法 translate()expandtabs()

Python replace() 示例

接下来,我们通过几个简单的例子来讲解 Python replace() 方法是如何使用的。

示例 1:replace() 基本用法

s = 'I love Python!'
result = s.replace('Python', 'Java')
print(result)

运行结果如下。

I love Java!

分析:

result = s.replace('Python', 'Java') 表示用 “Java” 来替代 s 中的 “Python”。

示例 2:replace() 会替换所有匹配项

s = 'I love Python Python Python!'
result = s.replace('Python', 'Java')
print(result)

运行结果如下。

I love Java Java Java!

分析:

默认情况下,replace() 方法会将字符串中所有符合条件的字符都替换掉,如果只想替换第 1 个或者前 n 个,可以使用 replace() 方法第 3 个参数,修改后的代码如下:

s = 'I love Python Python Python!'
result = s.replace('Python', 'Java', 1)
print(result)

此时运行结果如下。

I love Java Python Python!

示例 3:replace() 替换次数为 0 或负数

s = 'aaaaa'
result1 = s.replace('a', 'b', 0)     # 不替换
result2 = s.replace('a', 'b', -1)    # 替换所有

print(result1)
print(result2)

运行结果如下。

aaaaa
bbbbb

分析:

对于 replace() 方法来说,当 count 参数为 0 时,表示不进行替换。当 count 参数为 -1 时,表示替换所有匹配项。

示例 4:replace() 删除子串

s = 'Hello, World!'
result = s.replace(',', '')
print(result)

运行结果如下。

HelloWorld!

分析:

s.replace(', ', '') 表示使用空字符串来替换 ',',此时相当于把子串 ',' 删除了。

示例 5:replace() 链式调用

s = 'C++ is fast!'
result = s.replace('C++', 'Python').replace('fast', 'slow')
print(result)

运行结果如下。

Python is slow!

分析:

replace() 方法可以连续调用,这样可以实现多次替换。不过对于需要频繁替换的长字符串,为了考虑性能,更推荐使用 translate() 方法。

replace() 与 translate() 对比

replace() 和 translate() 这 2 个方法都可以实现替换字符串的功能,它们之间的区别如下:

  • replace():适合简单替换(如单字符或固定子串)。
  • translate():适合批量替换或删除,效率更高。

示例 6:replace() vs translate()

s = 'abcdef'

# 使用 replace()
result1 = s.replace('a', 'x').replace('b', 'y').replace('c', 'z')
print(result1)

# 使用 translate()
table = str.maketrans('abc', 'xyz')
result2 = s.translate(table)
print(result2)

运行结果如下。

xyzdef
xyzdef

分析:

相比于 replace(),translate() 在多次替换时不会创建中间字符串,这样性能更高。

上一篇: rstrip()

下一篇: expandtabs()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号