'str'对象不支持项目赋值(Python)

时间:2016-07-26 22:52:47

标签: python

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

为什么呢?我怎样才能做到这一点?

3 个答案:

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

也许这不是预期的行为......