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
.