非常初级的Python:替换字符串的一部分

2024-10-01 09:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何替换字符串中的一个字母而不替换同一个字母。例如,让变量:

action = play sports.

我可以用print(action.replace("play", "playing")来代替“玩”

但是,如果你必须使用相同的字母怎么办

例如,如果要将“honeyhoney”的后半部分替换为“honeysweet”(将字符串的后半部分替换为sweet),该怎么办

很抱歉措辞不好,我是新来的编码和真的不熟悉这个。谢谢


Tags: 字符串编码play字母actionreplaceprintsweet
1条回答
网友
1楼 · 发布于 2024-10-01 09:29:47
def replaceLast(str, old, new):
  return str[::-1].replace(old[::-1],new[::-1], 1)[::-1]

print(replaceLast("honeyhoney", "honey", "sweet"))

输出

honeysweet

所以我们的想法是反转字符串和新旧子字符串, 因此,最后一个子字符串成为第一个,进行替换,然后再次反转返回的字符串,数字1只替换一次,而不是两个匹配

另一种解决方案

def replaceLast(str, old, new):
  ind = str.rfind(old)
  if ind == -1 : return str
  return str[:ind] + new + str[ind + len(old):];

print(replaceLast("honeyhoney", "honey", "sweet"))

输出

honeysweet

因此,这里我们得到从开始到最后一个子字符串索引的字符串,然后我们添加新的子字符串和旧的子字符串结束处的字符串的其余部分,并将它们作为新字符串返回,String.rfind如果没有找到匹配项,则返回-1,并且我们需要检查aginst,以确保输出是正确的,即使没有可替换的内容

相关问题 更多 >