在 Python 中,想要替换字符串的一部分,常用的有以下 2 种方式。
- 使用 replace() 方法。
- 使用正则表达式。
使用 replace 替换字符串
在 Python 中,我们可以使用 replace() 方法表示用一个字符串替换另一个字符串的某一部分。
语法:
str.replace(old, new, count)说明:
replace() 方法接收以下 3 个参数。
old(必选):表示原字符串中的子串。new(必选):表示使用哪个字符串来代替。count(可选):替换的次数。
str.replace(old, new) 其实很好理解,它表示先匹配出字符串中符合的 old 子串,然后再使用 new 来替换这些子串。
示例 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使用正则表达式替换字符串
在 Python 中,我们还可以使用正则表达式的 sub() 函数来替换字符串中符合匹配条件的部分。其中,sub 是 “substitute(代替)” 的缩写。
语法:
re.sub(pattern, replace, s, count=n)说明:
sub() 函数接收以下 4 个参数。
pattern(必选):是一个正则表达式。replace(必选):是替换后的子字符串。s(必选):初始字符串。count(可选):替换的次数(前 n 个)。
示例 3:字符串的 replace() 方法
s = 'Hello 111 Python 111'
result = s.replace('111', '222')
print(result)运行结果如下。
Hello 222 Python 222分析:
虽然替换字符串的某一部分,我们可以使用字符串的 replace() 方法来实现。不过 replace() 方法只能实现比较简单的替换。
像上面这个例子,如果我们把 s 改为 'Hello 123 Python 456',然后使用 '222' 来替换 s 中所有的数字,那么就没法直接通过 replace() 方法达到目的了。此时,应该使用正则表达式的 sub() 函数来实现。
示例 4:正则表达式的 sub() 函数
import re
s = 'Hello 123 Python 456'
pattern = r'\d+'
result = re.sub(pattern, '222', s)
print(result)运行结果如下。
Hello 222 Python 222分析:
很多初学的小伙伴对 sub(pattern, replace, s) 函数的参数很难理解,搞不清楚为什么要用到多达 3 个参数。其实我们可以这样去理解:首先使用 pattern 去匹配 s,找出符合条件的部分,然后再去使用 replace 替换。
在上面这个例子中,对于 sub(pattern,'222',s),首先我们使用 pattern 去匹配 s,然后找到了符合条件的部分:'123'、'456',最后使用 '222' 去替换就可以了。
示例 5:sub() 的 count 参数
import re
s = 'Hello 123 Python 456 tutorial 789'
pattern = r'\d+'
result = re.sub(pattern, '222', s, 2)
print(result)运行结果如下。
Hello 222 Python 222 tutorial 789分析:
re.sub(pattern, '222', s, 2) 表示只会替换前 2 个符合条件的部分。如果改为 re.sub(pattern, '222', s, 1),此时运行结果如下。
Hello 222 Python 456 tutorial 789