我正在研究这个python函数,它应该有三个参数:第一个,称为内容字符串,可以是任何字符串。第二个称为令牌,应该是一个包含单个字符的字符串,该字符将在内容字符串中替换。第三个,应该表示将在结果字符串中的新字符。
到目前为止,我有这个:
def myReplace(aString, token, newToken):
cnt = 0
while(cnt < len(aString)):
if(aString[cnt] == token):
aString[cnt] == newToken
return aString[cnt]
cnt+=1
#print("Couldn't find "+token+" in "+aString)
return "can not find the token you are looking for in the String"
该函数假设返回一个新字符串,其中令牌字母被新字符替换,
>>> result = myReplace("Hello world!",'l','q')
>>> print(result)
Heqqo Worqd!
但它只返回一个字符。
>>> myReplace("hello world", 'l', 'g')
'h'
我也尝试删除'cnt'变量,但这无济于事。
注意:我不能使用内置的replace()方法来解决这个问题。
任何帮助将不胜感激,它只是我尝试了它,似乎没有任何工作了。
答案 0 :(得分:1)
您遇到的基本问题是此行aString[cnt] == newToken
正在进行比较,而不是作业。
然而,更大的问题是在Python中,字符串是不可变的。它们无法修改。
要解决此问题,您需要使用替换构建一个新对象,然后将其转换回字符串。
这是一个选项,它使用替换构建列表,然后返回一个字符串:
def replace_token(string, token, replacement):
replaced = []
for character in s:
if character != token:
replaced.append(character)
else:
replaced.append(replacement)
return ''.join(replaced)
您也可以构建一个字符串,但在现实世界中不建议这样做,因为此操作非常低效:
def replace_token(string, token, replacement):
replaced = ''
for character in s:
if character != token:
replaced += character
else:
replaced += token
return replaced