在Python中使用replace()方法替换字符串中的索引。

7

我希望能做类似这样的事情。

example_string = "test"
print(example_string.replace(example_string[0], "b"))

期望的输出
best

然而,因为字母“t”被传递到方法中,结尾处的“t”也被替换为“b”。导致输出如下:

besb

我该如何做,以使输出结果为“best”而不是“besb”?

1
你可以尝试类似这样的代码 new_str = "b" + example_string[1:]replace(a,b) 用于将字符串中所有出现的 a 替换为 b - nbryans
我不明白,您想用'b'替换字符串的第一个't'字符吗?还是索引是决定替换什么(而不是't')的关键? - LNRD.CLL
@Lynch: 这是用于替换子字符串中的第一个出现,而不是替换特定出现的子字符串。 - user2357112
我不能回答因为它已经关闭了,但现在我明白了。这应该可以工作:word = "test"; i = word.index('t', 2); word[0:i] + "b" + word[i+1:]。当然,如果你知道要替换的字符的id而不是一个字母,你可以直接设置变量i。如果你需要替换字符串,你可以使用i+len(substring)+1来确定字符串的结束位置。 - Lynch
3个回答

11
问题在于.replace(old, new)返回一个复制了旧字符串但是将其中的所有old替换成了new后得到的新字符串。

相反,你可以使用以下方式交换索引为i的字符:

new_str = old_str[:i] + "b" + old_str[i+1:]

4
请查看文档
你可以使用
example_string.replace(example_string[0], "b", 1)

尽管像@nbryans在评论中提到的那样,使用切片替换第一个字符可能更加自然。


1
那对于这种情况是可以的,但是如果你想替换 example_string[3] 呢? - user2357112
请注意,您的问题是如何替换第一次出现的字符。(参见XY问题) 这是一个不同的问题。不要在不适当的情况下使用replace()。正如所指出的那样,当您想要对字符串(或其他序列,如列表或元组)的特定位置进行操作时,请使用切片。因此,对于您的新问题:s = example_string[:3] + "b" + example_string[4:] - dsh

1
example_string.replace("t", "b", 1)

2
这对于这种情况是有效的,但如果您想替换 example_string[3] 呢? - user2357112

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接