You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python的replace()方法替换'is'为'are'时会同时替换'this'中的'is'?

字符串替换现象的原因解析

先看你执行的两次操作及结果:

第一次代码:

print("This is it!".replace("is", "are"))

输出:

Thare are it!

反向操作代码:

print("Thare are it!".replace("are", "is"))

输出:

This is it!

核心原因

Python的str.replace()方法默认会替换字符串中所有匹配到的子串,不管这个子串是不是独立的单词:

  • 第一次替换时,原字符串"This is it!"里有两处"is":一处是"This"末尾的"is",另一处是空格后的独立"is"。两个"is"都被替换成"are",所以"This"变成"Thare",独立"is"变成"are",最终得到"Thare are it!"。
  • 反向替换时,"Thare are it!"里有两处"are":一处是"Thare"末尾的"are",另一处是空格后的独立"are"。两个"are"都被替换成"is","Thare"变回"This",独立"are"变回"is",就还原成了最初的字符串。

如果只想替换独立的单词(避免匹配单词内部的子串),可以用正则表达式的单词边界匹配:

import re
# 只替换独立的"is",输出"This are it!"
print(re.sub(r'\bis\b', 'are', "This is it!"))

内容的提问来源于stack exchange,提问作者Davide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:54:58