'str' object does not support item assignment

python, string

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`.

Problem

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] != '\0') 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 ```

Original source

Related problems