python求助: 'str' object does not support item assignment

w=""
q=""
while 1:
if x>=len(b) or y>=len(a):
break
if s[x][y]=="\\":
w=w+a[y]
q=s[x]
q[y]="_"
s[x]=q
x=x+1
y=y+1
else:
return w
break

其中s[]是一个列表,每个列表项都是字符串。
但运行后编译器提示错误:

q[y]="_"
TypeError: 'str' object does not support item assignment

请问该如何解决?
最近我在学python语言,这个是想在w=w+a[y]之后,把s[x][y]的值从"\\"改成"_"

q[y]="_"
q是一个字符串,而字符串是不可变对象,你不能用下标赋值的方式去改变字符串 。
至于a=123
b=123,使用同一内存地址也很好理解。
在python中,数字,字符串和元组都是不可变对象。比如字符串,如果被python判定为是短字符串,那么为了节省内存空间,让两个变量指向同一个内存地址。
至于多少个字符是短字符串,我在python2.7中测试的长度是20及20以内的都算短字符串。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-05
不会吧,你给的代码连刚开始运行的X和Y都没有赋值定义。肯定不对啊。后再说这个字符串操作的问题! 还有你的代码是不是没贴完哦。a 和 b 是啥子哦???没法给你答啊!追问

确实没贴完,但我只是想问一下字符串的问题。

追答

如果你说是字符串的问题,那是想用索引的方法去改变字符串。这样是不可取的,字符串是不可变的对象,相对于可变对象就比如列表 。你看一下实验:
>>> s='look me'
>>> s[4]
' '
>>> s[2]
'o'
>>> s[4]='+'
Traceback (most recent call last):
File "", line 1, in
s[4]='+'
TypeError: 'str' object does not support item assignment

>>> s[2]='del'
Traceback (most recent call last):
File "", line 1, in
s[2]='del'
TypeError: 'str' object does not support item assignment
>>>
>>> l=[1,2,3]
>>> l
[1, 2, 3]

>>> l[1]='a'
>>> l
[1, 'a', 3]
>>>
看到了吧,对字符串进行索引赋值时就会引发
TypeError: 'str' object does not support item assignment
再说一次,字符串是不可变的,不能这样操作,但对列表索引赋值时就没有问题

相似回答