← Все вопросы
TypeError: 'str' object does not support item assignment — почему нельзя s[0] = 'X'?
12
s = "hello"
s[0] = "H"
Падает TypeError: 'str' object does not support item assignment. Как тогда заменить один символ в строке?
3 ответа
23
✓ Принятый ответ — помог автору
Строки в Python неизменяемые (immutable): после создания их содержимое поменять нельзя, поэтому присваивание по индексу s[0] = ... запрещено. То же самое касается кортежей.
Надо не менять, а создавать новую строку. Варианты:
s = "hello"
# через срезы
s = "H" + s[1:] # 'Hello'
# через список (если правок много)
chars = list(s)
chars[0] = "H"
s = "".join(chars) # 'Hello'
# заменить по значению
s = s.replace("h", "H", 1) # 'Hello'
Идея одна: получаем новую строку, а старую «изменить на месте» нельзя в принципе.
Алескей Кора list(s) → правим → ''.join(...) — самый универсальный способ, когда замен много. · 10 месяцев назад
8
Строки нельзя менять на месте. Собери новую через срез: "H" + s[1:].
3
Невозможно — строки immutable. Делай новую строку.
Ваш ответ
Войдите, чтобы ответить на вопрос.