Строки неизменны.Это означает, что вы не можете назначить им вообще.Вы можете использовать форматирование:
>>> s = 'abc{0}efg'.format('d')
>>> s
'abcdefg'
Или объединение:
>>> s = 'abc' + 'd' + 'efg'
>>> s
'abcdefg'
Или замену (спасибо Odomontois за напоминание):
>>> s = 'abc0efg'
>>> s.replace('0', 'd')
'abcdefg'
Но имейте в виду, чтовсе эти методы создают копий строки, а не изменяют ее на месте.Если вы хотите модифицировать на месте, вы можете использовать bytearray
- хотя это будет работать только для простых строк ascii, как указывает alexis.
>>> b = bytearray('abc0efg')
>>> b[3] = 'd'
>>> b
bytearray(b'abcdefg')
Или вы можете создать список символов и манипулировать им.Вероятно, это наиболее эффективный и правильный способ частых крупномасштабных манипуляций со строками:
>>> l = list('abc0efg')
>>> l[3] = 'd'
>>> l
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> ''.join(l)
'abcdefg'
И рассмотрите модуль re
для более сложных операций.
Форматирование строки и манипулирование списком - это два метода, которые, скорее всего, будут правильными и эффективными IMO: форматирование строки, когда требуется всего несколько вставок, и манипулирование списком, когда вам нужно часто обновлять строку.