← Все вопросы

TypeError: 'str' object does not support item assignment — почему нельзя s[0] = 'X'?

Задан 11 месяцев назад707 просмотров3 ответа
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. Делай новую строку.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект