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:]

Leave a Reply

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