'str' object does not support item assignment

Python Erreur courante

Explication

L'erreur `TypeError: 'str' object does not support item assignment` survient quand vous essayez de **modifier un caractère d'une chaîne par son indice** (`s[0] = "x"`). En Python, les chaînes sont **immuables** : on ne peut pas changer leur contenu en place, il faut créer une nouvelle chaîne. ```python nom = "alice" nom[0] = "A" # interdit : les chaînes sont immuables # TypeError: 'str' object does not support item assignment ```

Causes courantes

- **Tentative de modifier un caractère** d'une chaîne via son indice. - **Confusion avec les listes** (qui, elles, sont modifiables). - **Réutiliser du code** écrit pour une liste sur une chaîne.

1. Reconstruisez une nouvelle chaîne

nom = "alice"
nom = "A" + nom[1:]   # ✅ "Alice"

2. Utilisez str.replace() pour remplacer

phrase = "j'aime le café"
phrase = phrase.replace("café", "thé")   # ✅ nouvelle chaîne

3. Passez par une liste si beaucoup de modifications

caracteres = list("alice")
caracteres[0] = "A"
nom = "".join(caracteres)   # ✅ "Alice"

4. Capitaliser proprement

nom = "alice".capitalize()   # ✅ "Alice"

Comment prevenir cette erreur

- **Souvenez-vous** : les chaînes sont immuables, les listes sont modifiables. - **Privilégiez les méthodes de chaîne** (`replace`, `upper`, `capitalize`) qui renvoient une nouvelle chaîne. - Pour de nombreuses transformations caractère par caractère, travaillez sur une `list` puis `"".join(...)`. - Référence : [docs.python.org — str](https://docs.python.org/fr/3/library/stdtypes.html#text-sequence-type-str).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Pourquoi les chaînes sont-elles immuables en Python ?
Pour des raisons de performance et de sécurité (hashabilité, partage mémoire). Cela garantit qu'une chaîne ne change jamais une fois créée — d'où l'usage de méthodes qui renvoient de **nouvelles** chaînes.
Comment remplacer le caractère à une position précise ?
Reconstruisez par découpage : `s = s[:i] + nouveau + s[i+1:]`. Ou convertissez en liste, modifiez, puis `"".join(...)`.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.