python – Replacing a character from a certain index

python – Replacing a character from a certain index

As strings are immutable in Python, just create a new string which includes the value at the desired index.

Assuming you have a string s, perhaps s = mystring

You can quickly (and obviously) replace a portion at a desired index by placing it between slices of the original.

s = s[:index] + newstring + s[index + 1:]

You can find the middle by dividing your string length by 2 len(s)/2

If youre getting mystery inputs, you should take care to handle indices outside the expected range

def replacer(s, newstring, index, nofail=False):
    # raise an error if index is outside of the string
    if not nofail and index not in range(len(s)):
        raise ValueError(index outside given string)

    # if not erroring, but the index is still not in the correct range..
    if index < 0:  # add it to the beginning
        return newstring + s
    if index > len(s):  # add it to the end
        return s + newstring

    # insert the new string between slices of the original
    return s[:index] + newstring + s[index + 1:]

This will work as

replacer(mystring, 12, 4)
myst12ing

You cant replace a letter in a string. Convert the string to a list, replace the letter, and convert it back to a string.

>>> s = list(Hello world)
>>> s
[H, e, l, l, o,  , W, o, r, l, d]
>>> s[int(len(s) / 2)] = -
>>> s
[H, e, l, l, o, -, W, o, r, l, d]
>>> .join(s)
Hello-World

python – Replacing a character from a certain index

Strings in Python are immutable meaning you cannot replace parts of them.

You can however create a new string that is modified. Mind that this is not semantically equivalent since other references to the old string will not be updated.

You could for instance write a function:

def replace_str_index(text,index=0,replacement=):
    return %s%s%s%(text[:index],replacement,text[index+1:])

And then for instance call it with:

new_string = replace_str_index(old_string,middle)

If you do not feed a replacement, the new string will not contain the character you want to remove, you can feed it a string of arbitrary length.

For instance:

replace_str_index(hello?bye,5)

will return hellobye; and:

replace_str_index(hello?bye,5,good)

will return hellogoodbye.

Leave a Reply

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