python – Changing one character in a string
python – Changing one character in a string
Dont 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 cant 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
python – Changing one character in a string
new = text[:1] + Z + text[2:]