Каков самый легкий путь в Python для замены символа в строке?
Например:
text = "abcdefg";
text[1] = "Z";
^
Не изменяйте строки.
Работайте с ними как с списками; превращайте их в строки только при необходимости.
>>> s = list("Hello zorld")
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd']
>>> s[6] = 'W'
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> "".join(s)
'Hello World'
Строки Python неизменяемы (т. е. не могут быть изменены). На то есть множество причин. Используйте списки, пока у вас не останется выбора, только затем превратите их в строки.
На то есть множество причин. Используйте списки, пока у вас не останется выбора, только затем превратите их в строки. На то есть множество причин. Используйте списки, пока у вас не останется выбора, только затем превратите их в строки. если Ваш мир составляет 100% ascii/utf-8
(много вариантов использования помещается в то поле):
b = bytearray(s, 'utf-8')
# process - e.g., lowercasing:
# b[0] = b[i+1] - 32
s = str(b, 'utf-8')
Python 3.7.3
Строки Python неизменяемы, их можно изменить, сделав копию.
Самый простой способ сделать то, что вы хотите, это, вероятно.
text = "Z" + text[1:]
Текст [1:] возвращает строку в тексте от позиции 1 до конца, позиции отсчитываются от 0, поэтому вторым символом является '1'.
edit: Вы можете использовать ту же технику нарезки строки для любой части строки
text = text[:1] + "Z" + text[2:]
Или, если буква появляется только один раз, вы можете использовать предложенную технику поиска и замены ниже
Как говорили другие, обычно строки Python должны быть неизменяемыми.
Однако, если вы используете CPython, реализацию на python.org, можно использовать ctypes для изменить структуру строки в памяти.
Вот пример, в котором я использую технику для очистки строки.
Отметить данные как конфиденциальные в python
Я упоминаю это для полноты, и это должно быть ваше в крайнем случае, поскольку это хакерство.