2015-10-20 72 views
0

我正在研究這個python函數,它應該有三個參數:第一個稱爲內容字符串,可以是任何字符串。第二個稱爲令牌的字符串應該是一個包含要在內容字符串中替換的單個字符的字符串。第三,應表示將在結果字符串中的新字符。一個函數,執行類似於python中的string.replace()方法的任務

我有這個至今:

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

您所遇到的基本問題是該行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 
相關問題