2016-07-26 139 views
0
def remove_char(text): 
    for letter in text[1]: 
     text[0] = text[0].replace(letter," ") 
    return text[0] 

這是返回:'海峽' 對象不支持的項目分配(蟒蛇)

'str' object does not support item assignment 

爲什麼?我該如何做這項工作?

+2

'文本= text.replace(信」 「)',你不能使用字符串賦值。另外'for text in text [1]'與text = text.replace(text [1],「」)' –

+0

相同。換句話說:一個python字符串是不可變的。 – SuperSaiyan

回答

2

在Python中,字符串不可變,這意味着它們不能被改變。但是,您可以用新版本的字符串替換整個變量。

實施例:

text = ' ' + text[1:] # replaces first character with space 
1

字符串是不可變的。通過嘗試:

text[0] = text[0].replace(letter," ") 

您試圖訪問字符串並改變它,這是由於該字符串的不變性不允許的。相反,你可以使用一個for環路和一些片斷:

for i in range(0, len(y)): 
    if y[i] == ",": 
     print y[i+1:len(y)] 
     break 

你可以改變一個變量被分配到字符串(第二一段代碼),而不是字符串本身(你的代碼)。

+0

hmm,也許我應該已經更清楚了。輸入(文本)是一個用逗號分隔的字符串。當逗號右側字符串中的字符出現時,我想刪除逗號左側字符串中的所有字母。 – user1072337

+0

請檢查我的編輯 –

0

假設參數text是一個字符串,行for letter in text[1]:對我沒有多大意義,因爲text[1]是單個字符。迭代單字母字符串有什麼意義?

但是,如果text是字符串的名單,那麼你的函數不拋出任何異常,它只是返回從第一個字符串(text[0])第二個字符串的所有字母替換返回的字符串( text[1])由一個空格(" ")。

下面的例子說明如何remove_char作品時,它的參數是一個字符串列表:

In [462]: remove_char(['spam', 'parrot', 'eggs']) 
Out[462]: 's m' 

In [463]: remove_char(['bar', 'baz', 'foo']) 
Out[463]: ' r' 

In [464]: remove_char(['CASE', 'sensitive']) 
Out[464]: 'CASE' 

也許這不是預期的行爲...

相關問題