Python:拆分字符串以替换字符会弄乱索引

Python: Splitting string to replace a character messes up indexes

我正在尝试制作刽子手游戏的一个版本。 我设置了单词字符串,用 + 替换元音,其余的用 - 等等。 当我需要替换字符串中的字符时,问题就来了: 我阅读了很多关于 python 的字符串替换的问题,最接近我需要的似乎是 string = string[:index] + char + [index+1:]。问题是索引变得完全随机:

例子 单词:stuck 格式化:- - + - -

如果我发送 c: 它发现索引是 3 所以字符串应该是 string[:3] + char + string[4:] 结果 - - + c - 相反发生的是:

- c + - -

这个字符串是从索引 2 开始的吗?

代码:

交换功能

def swapChar(position, tstring, char):
    print("/////////")
    print(position)
    print(tstring).       # note 1
    print(char)
    print("////////")
    print(tstring[0 : (position+2)] + " NEWCHAR " + tstring[(position+3):])   # note 2
    first = tstring[:position-1]
    print("First: " + first)
    second = tstring [position+1:]
    print("Second: " + second)
    string = first + char + second    # note 3
    return string

注意 1:打印此信息以检查获取函数的值是否正确,确实如此

/////////
3
 - - + - -
c
////////

注2:即使对索引求和2也会导致位置错误

 - -  NEWCHAR  - -

注3:split拆分我也试过,但是没有用。

此外,有时我注意到选择第二个字符可能会在字符串中添加一个位置(例如,卡住,如果我输入 u,它可能会变成 - u c + - - 等等(我通过完成它们得到了一些类似于 + - e m p i r e - + - + 的单词))。

要么字符串拆分是随机进行的,要么我不太了解它是如何完成的,我认为后者更有可能。

奖金示例日志:

Chosen Word: ruth
Letter: r
Letter: u
Letter: t
Letter: h
[ MESSAGE ] {{ /device/write }} "h"
Equivalence:  r = h
Equivalence:  u = h
Equivalence:  t = h
Equivalence:  h = h
/////////
3
 - + - -
h
////////
First:  -
Second:  - -
- h - -

如果您需要任何其他信息,请询问

您认为 space 也是字符吗?字符串似乎在所有字符之间都有 space,因此在考虑索引时它们也算在内,这会弄乱你的方法。