logo oujood
🔍

Les chaînes de caractères Python (strings)

En Python, une chaîne de caractères (string) se délimite par des guillemets simples ou doubles : 'bonjour' est identique à "bonjour". Découvrez toutes les techniques de manipulation des strings.

OUJOOD.COM

Qu'est-ce qu'une chaîne de caractères en Python ?

En Python, une chaîne de caractères (ou string) est une séquence de caractères Unicode. Concrètement, c'est le type de données qu'on utilise dès qu'on manipule du texte : un nom, une phrase, un message d'erreur, une URL. Python encode les strings en UTF-8, ce qui signifie que les accents, les idéogrammes et les emojis fonctionnent sans configuration particulière.

Contrairement à des langages comme C, Python ne fait pas de distinction entre un caractère et une chaîne : un caractère est simplement une chaîne de longueur 1. Pour afficher du texte, on utilise print(). Les guillemets simples et doubles sont interchangeables :

  📋 Copier le code

# Les deux syntaxes donnent le même résultat
print("Bonjour")   # Guillemets doubles
print('Bonjour')   # Guillemets simples

Affecter une chaîne à une variable

On assigne une chaîne à une variable avec l'opérateur =. Python détecte automatiquement le type str — pas besoin de le déclarer. Pour vérifier le type d'une variable, on utilise la fonction type().

  📋 Copier le code

# Affectation d'une chaîne à une variable
a = "Bonjour"
print(a)        # Affiche : Bonjour
print(type(a))  # Affiche : <class 'str'>

Les chaînes multilignes

Pour écrire une chaîne sur plusieurs lignes, Python propose la syntaxe des triple guillemets ("""...""" ou '''...'''). Les sauts de ligne sont conservés tels quels. Cette syntaxe est fréquemment utilisée pour les docstrings, les blocs SQL ou les templates.

  📋 Copier le code

# Triple guillemets doubles
a = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incidunt."""
print(a)
# Triple guillemets simples — même comportement
b = '''Première ligne,
deuxième ligne,
troisième ligne.'''
print(b)

Accéder à un caractère par son index

Une chaîne Python est une séquence ordonnée : chaque caractère occupe une position précise, accessible via son index entre crochets []. L'index commence à 0. Python accepte aussi les index négatifs : -1 désigne le dernier caractère, -2 l'avant-dernier, etc.

  📋 Copier le code

# Accès par index positif (commence à 0)
a = "Bonjour, le monde !"
print(a[0])   # Affiche : B
print(a[2])   # Affiche : n
# Index négatif : compte depuis la fin
print(a[-1])  # Affiche : ! (dernier caractère)
print(a[-3])  # Affiche : d

Parcourir une chaîne avec une boucle for

Puisqu'une chaîne est une séquence, on peut la parcourir lettre par lettre avec une boucle for. C'est la façon la plus lisible d'itérer sur chaque caractère. Si on a besoin de l'index en même temps, enumerate() est l'outil adapté.

  📋 Copier le code

# Parcours simple avec compteur manuel
i = 0
for x in "Wagon":
    print("la lettre en position " + str(i) + " est : " + x)
    i = i + 1
# Méthode recommandée : enumerate() donne l'index et la valeur
for i, x in enumerate("Wagon"):
    print(f"Position {i} → caractère : {x}")

Longueur d'une chaîne avec len()

La fonction len() retourne le nombre total de caractères d'une chaîne, espaces et ponctuation inclus. Elle sert souvent à valider une saisie utilisateur ou à contrôler une boucle.

  📋 Copier le code

# len() compte tous les caractères, espaces compris
a = "Bonjour, le monde !"
longueur = len(a)
print("La chaîne contient " + str(longueur) + " caractères")
# Utilisation dans une condition
if len(a) > 10:
    print("La chaîne est longue")

Tester la présence d'une sous-chaîne : in et not in

Les opérateurs in et not in permettent de vérifier si une sous-chaîne est présente dans une chaîne. Ils retournent un booléen (True ou False) et sont sensibles à la casse.

  📋 Copier le code

# 'in' : True si la sous-chaîne est présente
txt = "Les meilleures choses de la vie sont gratuites !"
print("vie" in txt)   # True
print("cher" in txt)  # False
if "vie" in txt:
    print("'vie' est présent dans le texte.")
# 'not in' : True si la sous-chaîne est absente
print("cher" not in txt)  # True
if "cher" not in txt:
    print("'cher' n'existe pas dans le texte.")

Le slicing : découper une chaîne

Le slicing extrait une portion d'une chaîne à partir d'une plage d'index. La syntaxe est chaine[debut:fin:pas]. L'index de fin est exclu du résultat. Omettre un index revient à utiliser le début ou la fin de la chaîne par défaut.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites !"
# [debut:fin] — la borne fin est exclue
print(txt[4:14])   # meilleures
# Depuis le début
print(txt[:22])    # Les meilleures choses
# Jusqu'à la fin
print(txt[26:])    # la vie sont gratuites !
# Index négatif
print(txt[-10:-1]) # gratuites
# Pas (step) : 1 caractère sur 2
print(txt[::2])
# Inverser la chaîne
print(txt[::-1])

Méthodes de conversion de casse

Python propose quatre méthodes pour changer la casse d'une chaîne. Elles ne modifient pas la chaîne d'origine — les strings sont immuables en Python — mais retournent une nouvelle chaîne transformée.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# upper() : tout en majuscules
print(txt.upper())
# lower() : tout en minuscules
print(txt.lower())
# capitalize() : première lettre en majuscule, reste en minuscule
print(txt.capitalize())
# title() : chaque mot commence par une majuscule
print(txt.title())

Supprimer les espaces avec strip()

strip() supprime les espaces blancs (espaces, tabulations, sauts de ligne) en début et en fin de chaîne. Utile pour nettoyer une saisie utilisateur avant traitement.

  📋 Copier le code

txt = "  Bonjour le monde !  "
# strip() : supprime des deux côtés
print(txt.strip())   # "Bonjour le monde !"
# lstrip() : supprime uniquement à gauche
print(txt.lstrip())  # "Bonjour le monde !  "
# rstrip() : supprime uniquement à droite
print(txt.rstrip())  # "  Bonjour le monde !"

Remplacer une sous-chaîne avec replace()

replace(ancien, nouveau) remplace toutes les occurrences d'une sous-chaîne. Un troisième argument optionnel limite le nombre de remplacements effectués.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# Remplace toutes les occurrences
print(txt.replace("meilleures", "plus belles"))
# Avec limite : remplace seulement la 1ère occurrence
txt2 = "aaabbbaaaccc"
print(txt2.replace("aaa", "XXX", 1))  # XXXbbbaaaccc

Découper et reconstituer : split() et join()

split() divise une chaîne en liste selon un séparateur. join() fait l'opération inverse : il fusionne une liste de chaînes en une seule, avec un séparateur choisi.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# split() : divise selon un séparateur
mots = txt.split(" ")
print(mots)
# ['Les', 'meilleures', 'choses', 'de', 'la', 'vie', 'sont', 'gratuites!']
# join() : reconstitue la chaîne avec un nouveau séparateur
reconstitue = "-".join(mots)
print(reconstitue)
# Les-meilleures-choses-de-la-vie-sont-gratuites!

Concaténer des chaînes

L'opérateur + assemble deux chaînes en une seule. Attention : on ne peut pas additionner directement une chaîne et un entier — il faut d'abord convertir l'entier avec str(). L'opérateur * répète une chaîne un nombre de fois donné.

  📋 Copier le code

# Concaténation avec +
a = "Les meilleures choses"
b = "de la vie sont gratuites!"
c = a + " " + b
print(c)
# Répétition avec *
separateur = "-" * 30
print(separateur)  # 30 tirets

Insérer des variables dans une chaîne : f-strings et format()

La méthode recommandée depuis Python 3.6 est le f-string : on préfixe la chaîne avec f et on place les variables directement entre accolades. C'est plus lisible et plus rapide que les techniques précédentes. L'ancienne méthode format() reste fonctionnelle sur les versions antérieures.

  📋 Copier le code

# f-string : syntaxe recommandée depuis Python 3.6
age = 36
nom = "Alice"
txt = f"Mon amie {nom} a {age} ans."
print(txt)  # Mon amie Alice a 36 ans.
# Les f-strings acceptent des expressions Python
prix = 49.95
quantite = 3
print(f"Total : {prix * quantite:.2f} €")  # Total : 149.85 €
# Ancienne méthode : format() avec placeholders {}
article = 567
monOrder = "Je veux {} pièces de l'article {} pour {} euros."
print(monOrder.format(quantite, article, prix))
# Avec index pour contrôler l'ordre des arguments
monOrder2 = "Je veux payer {2} euros pour {0} pièces de l'article {1}."
print(monOrder2.format(quantite, article, prix))

Les caractères d'échappement

Un caractère d'échappement commence par un antislash \ et permet d'insérer des caractères spéciaux dans une chaîne : guillemets, saut de ligne, tabulation, etc.

  📋 Copier le code

# \" : guillemet double dans une chaîne délimitée par des guillemets doubles
txt = "Nous sommes les soi-disant \"Militants\" pour la nature."
print(txt)
# \n : saut de ligne
print("Ligne 1\nLigne 2\nLigne 3")
# \t : tabulation
print("Colonne 1\tColonne 2\tColonne 3")
# \\ : antislash littéral
print("Chemin Windows : C:\\Users\\nom\\Documents")

Méthodes de recherche : find(), count(), startswith(), endswith()

Ces méthodes permettent de localiser une sous-chaîne, de compter ses occurrences ou de vérifier par quoi une chaîne commence ou se termine.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# find() : index de la 1ère occurrence, -1 si absent
print(txt.find("vie"))     # 28
print(txt.find("argent"))  # -1
# count() : nombre d'occurrences
print(txt.count("es"))
# startswith() et endswith()
print(txt.startswith("Les"))        # True
print(txt.endswith("gratuites!"))   # True
# Vérifier la nature des caractères
print("12345".isdigit())    # True
print("Python".isalpha())   # True
print("  ".isspace())       # True

Par carabde | Mis à jour le 24 avril 2026