首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“‘str”对象不支持项赋值

“‘str”对象不支持项赋值
EN

Stack Overflow用户
提问于 2012-05-17 15:18:41
回答 9查看 506.2K关注 0票数 180

我想从一个字符串s1中读取一些字符,并将其放入另一个字符串s2中。

但是,赋值给s2[j]时会出现错误:

代码语言:javascript
复制
s2[j] = s1[i]

# TypeError: 'str' object does not support item assignment

在C中,这是有效的:

代码语言:javascript
复制
int i = j = 0;
while (s1[i] != '\0')
    s2[j++] = s1[i++];

我在Python中的尝试:

代码语言:javascript
复制
s1 = "Hello World"
s2 = ""
j = 0

for i in range(len(s1)):
    s2[j] = s1[i]
    j = j + 1
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-05-17 15:19:39

在Python中,字符串是不可变的,所以不能就地更改它们的字符。

但是,您可以执行以下操作:

代码语言:javascript
复制
for c in s1:
    s2 += c

这样做的原因是它是一条捷径:

代码语言:javascript
复制
for c in s1:
    s2 = s2 + c

上面的代码在每次迭代时创建一个新字符串,并将对该新字符串的引用存储在s2中。

票数 130
EN

Stack Overflow用户

发布于 2013-08-02 07:44:03

其他答案都是正确的,但您当然可以这样做:

代码语言:javascript
复制
>>> str1 = "mystring"
>>> list1 = list(str1)
>>> list1[5] = 'u'
>>> str1 = ''.join(list1)
>>> print(str1)
mystrung
>>> type(str1)
<type 'str'>

如果你真的想的话。

票数 150
EN

Stack Overflow用户

发布于 2012-05-17 15:24:33

正如aix提到的,Python中的字符串是不可变的(您不能原地更改它们)。

你想要做的事情可以通过很多方式来完成:

代码语言:javascript
复制
# Copy the string

foo = 'Hello'
bar = foo

# Create a new string by joining all characters of the old string

new_string = ''.join(c for c in oldstring)

# Slice and copy
new_string = oldstring[:]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10631473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档