'str'对象不支持Python中的项目赋值

时间:2012-05-17 07:18:41

标签: python string

我想从字符串中读取一些字符并将其放入其他字符串中(就像我们在C中所做的那样)。

所以我的代码如下所示

import string
import re
str = "Hello World"
j = 0
srr = ""
for i in str:
    srr[j] = i #'str' object does not support item assignment 
    j = j + 1
print (srr)

在C中代码可能是

i = j = 0; 
while(str[i] != '\0')
{
srr[j++] = str [i++];
}

我如何在Python中实现相同的功能?

7 个答案:

答案 0 :(得分:80)

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

>>> str1 = "mystring"
>>> list1 = list(str1)
>>> list1[5] = 'u'
>>> str1 = ''.join(list1)
>>> print(str1)
mystrung
>>> type(str1)
<type 'str'>

如果你真的想要。

答案 1 :(得分:70)

在Python中,字符串是不可变的,因此您无法就地更改字符。

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

for i in str:
    srr += i

这有效的原因在于它是:

的捷径
for i in str:
    srr = srr + i

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

答案 2 :(得分:9)

Python strings是不可变的,所以你在C中尝试做的事情在python中根本不可能。您必须创建一个新字符串。

  

我想从字符串中读取一些字符并将其放入   其他字符串。

然后使用字符串切片:

>>> s1 = 'Hello world!!'
>>> s2 = s1[6:12]
>>> print s2
world!

答案 3 :(得分:4)

正如aix所提到的 - Python中的字符串是不可变的(你无法在其中更改它们)。

您尝试做的事情可以通过多种方式完成:

# 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[:]

答案 4 :(得分:0)

如果您想将特定字符换成另一个字符,则是另一种方法:

def swap(input_string):
   if len(input_string) == 0:
     return input_string
   if input_string[0] == "x":
     return "y" + swap(input_string[1:])
   else:
     return input_string[0] + swap(input_string[1:])

答案 5 :(得分:-1)

这个解决方案怎么样:

str =“Hello World”(如问题中所述) srr = str +“”

答案 6 :(得分:-3)

您好,您应该尝试使用字符串拆分方法:

i = "Hello world"
output = i.split()

j = 'is not enough'

print 'The', output[1], j