‘str’ object does not support item assignment

Total
0
Shares

I would like to read some characters from a string s1 and put it into another string s2.

However, assigning to s2[j] gives an error:

s2[j] = s1[i]

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

In C, this works:

int i = j = 0;
while (s1[i] != '')
    s2[j++] = s1[i++];

My attempt in Python:

s1 = "Hello World"
s2 = ""
j = 0

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

Solution

In Python, strings are immutable, so you can’t change their characters in-place.

You can, however, do the following:

for c in s1:
    s2 += c

The reasons this works is that it’s a shortcut for:

for c in s1:
    s2 = s2 + c

The above creates a new string with each iteration, and stores the reference to that new string in s2.

Source: StackOverflow.com

Leave a Reply

Your email address will not be published. Required fields are marked *