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

Python能否用replace互换Hello World的e和o得到Holle Werld

Python字符串'e'与'o'互换实现方案

链式调用replace()失效的原因

链式replace()按顺序执行替换,无法直接实现字符互换:

  • 第一步执行s.replace("e","o")时,原字符串所有'e'会被替换为'o',此时"Hello World"变为"Hollo World",原有的'e'和本来的'o'都以'o'形式存在
  • 第二步执行.replace("o","e")时,会把当前所有'o'(包括第一步刚替换出来的'o'、字符串原生的'o')全部换成'e',最终输出错误结果Helle Werld

如果硬要用replace()实现,必须引入原字符串不存在的临时字符做中转,例:

s = "Hello World"
s = s.replace("e", "\x00").replace("o", "e").replace("\x00", "o")
print(s)
# 输出:Holle Werld

这种方案需要提前确认临时字符不会出现在原字符串中,通用性差,不推荐使用。

最简实现方案

你使用的translate()配合maketrans()的思路本身就是Python实现字符互换的最优原生方案,可以进一步简化写法:

  • 省去中间变量定义,直接单行完成:
s = "Hello World"
print(s.translate(str.maketrans({'e':'o', 'o':'e'})))
  • 还可以使用maketrans的双参数简化语法,直接传入等长的待替换字符组和目标字符组,不需要构造字典:
s = "Hello World"
print(s.translate(str.maketrans('eo', 'oe')))
# 输出:Holle Werld

这种实现方式执行效率高、语法简洁,不需要额外依赖,是该需求的标准写法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:18:29