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() 在多次替换时不会创建中间字符串,这样性能更高。
