18

How do I modify a single character in a string, in Python? Something like:

 a = "hello"
 a[2] = "m"

'str' object does not support item assignment.

1

4 Answers 4

16

Strings are immutable in Python. You can use a list of characters instead:

a = list("hello")

When you want to display the result use ''.join(a):

a[2] = 'm'
print ''.join(a)
Sign up to request clarification or add additional context in comments.

Comments

12

In python, string are immutable. If you want to change a single character, you'll have to use slicing:

a = "hello"
a = a[:2] + "m" + a[3:]

3 Comments

I suppose this would cost more memory if it's a really big string since you have to join three other strings together to form a new string, right?
Oh, yeah! If you need to do a whole bunch of these type of manipulations, it's best to use a list of characters. Unless you happen to already have a string and just happen to want to change one character. Even then, it's probably faster to create and modify a list.
@Shane: See @detly's answer below for a simple example.
8

Try constructing a list from it. When you pass an iterable into a list constructor, it will turn it into a list (this is a bit of an oversimplification, but usually works).

a = list("hello")
a[2] = m

You can then join it back up with ''.join(a).

Comments

3

It's because strings in python are immutable.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.