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