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
为什么呢?我怎样才能做到这一点?
答案 0 :(得分:3)
在Python中,字符串不可变,这意味着它们无法更改。但是,您可以使用新版本的字符串替换整个变量。
示例:
text = ' ' + text[1:] # replaces first character with space
答案 1 :(得分:2)
字符串是不可变的。通过尝试:
text[0] = text[0].replace(letter," ")
您正在尝试访问该字符串并对其进行更改,但由于该字符串的不变性而无法使用该字符串。相反,您可以使用for
循环和一些切片:
for i in range(0, len(y)):
if y[i] == ",":
print y[i+1:len(y)]
break
您可以更改变量分配给的字符串(第二段代码)而不是字符串本身(您的代码段)。
答案 2 :(得分: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'
也许这不是预期的行为......