When you are having string format data, you'll be assured that it stays the same. Assume that you have created one function named Foo in Python as below with a string argument, and would then modify the string; then the Foo's name would suddenly change:
class Foo(object):
def __init__(self, name):
self.name = name
name = "Hello"
foo = Foo(name)
name[0] = "J"
If the strings are mutable, then you have to make copies all the time to prevent errors and confusion.
It also provides the benefit that a single character is no different from a string of length one, so all string operators apply to characters as well.
Now coming to your concern, programming with immutable strings, just treat them as you treat numbers: as values, not as objects. If you want to change the first letter of the name would be
name = "J" + name[1:]