Changing one character in a string Changing one character in a string python python

Changing one character in a string


Don't modify strings.

Work with them as lists; turn them into strings only when needed.

>>> s = list("Hello zorld")>>> s['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd']>>> s[6] = 'W'>>> s['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']>>> "".join(s)'Hello World'

Python strings are immutable (i.e. they can't be modified). There are a lot of reasons for this. Use lists until you have no choice, only then turn them into strings.


Fastest method?

There are three ways. For the speed seekers I recommend 'Method 2'

Method 1

Given by this answer

text = 'abcdefg'new = list(text)new[6] = 'W'''.join(new)

Which is pretty slow compared to 'Method 2'

timeit.timeit("text = 'abcdefg'; s = list(text); s[6] = 'W'; ''.join(s)", number=1000000)1.0411581993103027

Method 2 (FAST METHOD)

Given by this answer

text = 'abcdefg'text = text[:1] + 'Z' + text[2:]

Which is much faster:

timeit.timeit("text = 'abcdefg'; text = text[:1] + 'Z' + text[2:]", number=1000000)0.34651994705200195

Method 3:

Byte array:

timeit.timeit("text = 'abcdefg'; s = bytearray(text); s[1] = 'Z'; str(s)", number=1000000)1.0387420654296875


new = text[:1] + 'Z' + text[2:]