【问题标题】:Using replace() method in python by index [duplicate]在python中按索引使用replace()方法[重复]
【发布时间】:2016-08-09 21:11:37
【问题描述】:

我想做这样的事情。

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

期待输出

best

但是,因为字母“t”被传递到方法中,所以最后的 t 也被替换为“b”。导致输出

besb

如何以一种会导致输出“best”而不是“besb”的方式进行操作?

【问题讨论】:

  • 您可能想尝试类似 new_str = "b" + example_string[1:] 的内容。 replace(a,b) 用于将所有出现的字符串ab 交换。
  • 我不明白,你想用 'b' 替换字符串的第一个 't' 字符吗?还是索引是决定替换什么的关键(而不是 t)
  • @Lynch:那是为了替换 first 出现的子字符串,而不是 特定 出现的子字符串。
  • 我无法回答,因为它已关闭,但现在我明白了。这应该有效:word = "test"; i = word.index('t', 2); word[0:i] + "b" + word[i+1:]。当然,如果您知道要替换的字符的 id 而不是字母,则可以直接设置变量i。如果您需要替换字符串,您可以使用 i+len(substring)+1 对其进行调整,以确定字符串的结束位置。

标签: python replace


【解决方案1】:

问题在于.replace(old, new) 返回字符串的副本,其中old 的出现已被new 替换。

相反,您可以使用以下命令交换索引 i 处的字符:

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

【讨论】:

    【解决方案2】:
    example_string.replace("t", "b", 1)
    

    【讨论】:

    • 这适用于这种情况,但是如果你想替换example_string[3]呢?
    【解决方案3】:

    检查the documentation

    你可以使用

    example_string.replace(example_string[0], "b", 1)
    

    尽管使用切片来替换第一个字符会更自然,正如@nbryans 在评论中指出的那样。

    【讨论】:

    • 这适用于这种情况,但是如果你想替换example_string[3]呢?
    • 请注意,您的问题具体是如何替换第一次出现的字符。 (见XY Problem)这是一个不同的问题。那就不要在不合适的地方使用replace()。如前所述,当您想要对字符串(或其他序列,如列表或元组)的特定位置进行操作时,请使用切片。所以对于你的新问题:s = example_string[:3] + "b" + example_string[4:]
    猜你喜欢
    • 2015-02-25
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 2019-12-17
    • 2022-01-18
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多