TypeError: ‘str’ object does not support item assignment

In Python, strings are immutable, which means we cannot change certain characters or the text of a string using the assignment operator. If you try to change the string value, the Python interpreter will raise 'str' object does not support item assignment error.

How to Reproduce the Error

Let us take a simple example to demonstrate this issue.

In the following code, we are accepting a username as an input parameter. If the username consists of non-alphanumeric characters, we are trying to replace those characters in a string with an empty character.

username = input("Enter a username: ")
for i in range(len(username)):
    if not username[i].isalnum():
        username[i] = ""


Enter a username: ^*P&YTHON 
Traceback (most recent call last):
  File "c:\Personal\IJS\Code\prgm.py", line 4, in <module>
    username[i] = ""
TypeError: 'str' object does not support item assignment

We get the TypeError because we tried to modify the string value using an assignment operator. Since strings are immutable, we cannot replace the value of certain characters of a string using its index and assignment operator.

How to Fix the Error

Since strings are mutable, we need to create a newly updated string to get the desired result. Let us take an example of how a memory allocation happens when we update the string with a new one.

text1 = "ItsMyCode"
text2 = text1
print("Memory Allocation ", id(text1))
print("Memory Allocation ", id(text2))
text1 = "ItsMyCode Python"
print("Memory Allocation ", id(text1))
print("Memory Allocation ", id(text2))


Memory Allocation  1999888980400
Memory Allocation  1999888980400
Memory Allocation  1999889178480
Memory Allocation  1999888980400

In the above code, notice that when we change the content of the text1 with an updated string, the memory allocation too got updated with a new value; however, the text2 still points to the old memory location.

We can solve this issue in multiple ways. Let us look at a few better solutions to handle the scenarios if we need to update the string characters.

Solution 1 – Create a new string by iterating the old string

The simplest way to resolve the issue in the demonstration is by creating a new string.

We have a new string called username_modified, which is set to empty initially.

Next, using the for loop, we iterate each character of the string, check if the character is a non-alphanumeric value, and append the character to a new string variable we created.

username = input("Enter a username: ")
username_modified = ""
for i in range(len(username)):
    if username[i].isalnum():
        username_modified += username[i]


Enter a username: ^*P&YTHON 

Solution 2- Creating a new string using a list

Another way is to split the string characters into a list, and using the index value of a list; we can change the value of the characters and join them back to a new string.

text = "ItsMyCode Cython Tutorial"

# Creating list of String elements
lst = list(text)

# Replace the required characters in the list
lst[10] = "P"

# Use join() method to concatenate the characters into a string.
updated_text = "".join(lst)



['I', 't', 's', 'M', 'y', 'C', 'o', 'd', 'e', ' ', 'C', 'y', 't', 'h', 'o', 'n', ' ', 'T', 'u', 't', 'o', 'r', 'i', 'a', 'l']
['I', 't', 's', 'M', 'y', 'C', 'o', 'd', 'e', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', 'T', 'u', 't', 'o', 'r', 'i', 'a', 'l']
ItsMyCode Python Tutorial


The TypeError: 'str' object does not support item assignment error occurs when we try to change the contents of the string using an assignment operator.

We can resolve this error by creating a new string based on the contents of the old string. We can also convert the string to a list, update the specific characters we need, and join them back into a string.

Leave a Reply

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

Sign Up for Our Newsletters

Subscribe to get notified of the latest articles. We will never spam you. Be a part of our ever-growing community.

You May Also Like