def replace_last(source, replace, new_s):
first_part, to_remove, last_part = source.rpartition(replace)
print("first_part = " + first_part) # debug
print("to_remove = " + to_remove) # debug
print("last_part = " + last_part) # debug
return first_part + new_s + last_part
s = "python c++ c c# java"
new_s = replace_last(s, 'v', 'X')
print(new_s)
'''
run:
first_part = python c++ c c# ja
to_remove = v
last_part = a
python c++ c c# jaXa
'''