在python

时间:2015-10-20 05:10:11

标签: string function python-2.7 methods

我正在研究这个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()方法来解决这个问题。

任何帮助将不胜感激,它只是我尝试了它,似乎没有任何工作了。

1 个答案:

答案 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