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,因此在考虑索引时它们也算在内,这会弄乱你的方法。
我正在尝试制作刽子手游戏的一个版本。
我设置了单词字符串,用 + 替换元音,其余的用 - 等等。
当我需要替换字符串中的字符时,问题就来了:
我阅读了很多关于 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,因此在考虑索引时它们也算在内,这会弄乱你的方法。