logo oujood
🔍

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

En Python, une chaîne de caractères (string) peut être délimitée 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 Python (string) ?

En Python, une chaîne de caractères (ou string) est un type de données fondamental permettant de stocker et manipuler du texte. Techniquement, il s'agit d'une séquence immuable d'octets encodés en Unicode (UTF-8), ce qui permet de gérer nativement les caractères accentués, les idéogrammes et les emojis. Contrairement à des langages comme C ou Java, Python ne distingue pas le type "caractère" du type "chaîne" : un caractère est simplement une chaîne de longueur 1.

On peut afficher une chaîne littérale avec la fonction print(). Les guillemets simples et doubles sont parfaitement interchangeables :

  📋 Copier le code

# Les deux syntaxes sont équivalentes en Python
print("Bonjour")   # Guillemets doubles
print('Bonjour')   # Guillemets simples - même résultat

Assigner une chaîne de caractères à une variable Python

L'affectation d'une chaîne de caractères à une variable Python s'effectue avec l'opérateur =. Python est un langage à typage dynamique : il infère automatiquement le type str sans déclaration explicite. Utilisez la fonction intégrée type() pour vérifier le type d'une variable.

  📋 Copier le code

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

Chaînes de caractères multilignes en Python

Pour créer une chaîne multiligne, Python propose la syntaxe des triple guillemets ("""...""" ou '''...'''). Cette approche est particulièrement utile pour les docstrings, les templates HTML ou les requêtes SQL longues. Les sauts de ligne sont préservés tels quels dans la chaîne.

  📋 Copier le code

# Triple guillemets doubles pour chaîne multiligne
a = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incidunt
ut labore et dolore magna aliqua."""
print(a)
# Avec triple guillemets simples - même résultat
b = '''Première ligne,
deuxième ligne,
troisième ligne.'''
print(b)

Les chaînes de caractères sont des séquences indexées

En Python, les chaînes de caractères sont des séquences ordonnées (tableaux d'octets Unicode). Chaque caractère est accessible via son index numérique entre crochets []. L'indexation commence à 0 pour le premier caractère. Python supporte également l'indexation négative : -1 désigne le dernier caractère.

  📋 Copier le code

# Accès à un caractère par son index positif
a = "Bonjour, le monde !"
print(a[0])   # Affiche : B (premier caractère, index 0)
print(a[2])   # Affiche : n (troisième caractère, index 2)
# Indexation négative : compte depuis la fin
print(a[-1])  # Affiche : ! (dernier caractère)
print(a[-3])  # Affiche : d (3e caractère en partant de la fin)

Parcourir une chaîne avec une boucle for

Puisque les strings sont des séquences, on peut les parcourir caractère par caractère avec une boucle for. C'est la méthode la plus pythonique pour itérer sur chaque élément. La fonction enumerate() permet d'obtenir simultanément l'index et la valeur.

  📋 Copier le code

# Méthode classique avec compteur manuel
i = 0
for x in "Wagon":
    print("la lettre en position " + str(i) + " est : " + x)
    i = i + 1
# Méthode pythonique recommandée avec enumerate()
for i, x in enumerate("Wagon"):
    print(f"Position {i} → caractère : {x}")

Longueur d'une chaîne Python : la fonction len()

La fonction intégrée len() retourne le nombre total de caractères d'une chaîne, espaces et caractères spéciaux inclus. Elle est essentielle pour valider des entrées utilisateur, tronquer des textes ou contrôler des boucles.

  📋 Copier le code

# len() compte tous les caractères, y compris les espaces et la ponctuation
a = "Bonjour, le monde !"
longueur = len(a)
print("La chaîne \"" + a + "\" contient " + str(longueur) + " caractères")
# Sortie : La chaîne "Bonjour, le monde !" contient 19 caractères
# Vérification : utiliser len() dans une condition
if len(a) > 10:
    print("La chaîne est longue")

Vérifier la présence d'une sous-chaîne avec in et not in

Python propose deux opérateurs booléens pour tester l'appartenance d'une sous-chaîne : in (retourne True si la valeur est présente) et not in (retourne True si la valeur est absente). Ces opérateurs sont sensibles à la casse.

  📋 Copier le code

# Opérateur 'in' : teste la présence d'une sous-chaîne
txt = "Les meilleures choses de la vie sont gratuites !"
print("vie" in txt)   # Affiche : True
print("cher" in txt)  # Affiche : False
# Utilisation dans une instruction if
if "vie" in txt:
    print("Oui, 'vie' est présent dans le texte.")
# Opérateur 'not in' : teste l'absence d'une sous-chaîne
print("cher" not in txt)  # Affiche : True (car 'cher' est absent)
if "cher" not in txt:
    print("'cher' n'existe pas dans le texte.")

Slicing Python : découpage de chaînes de caractères

Le slicing (découpage en tranches) est une fonctionnalité puissante de Python permettant d'extraire une sous-chaîne à partir d'une plage d'index. La syntaxe est chaine[debut:fin:pas]. L'index de fin est exclu. L'omission d'un index utilise les valeurs par défaut (début ou fin de la chaîne).

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites !"
# Slicing de base : [debut:fin] (fin exclue)
print(txt[4:14])   # Affiche : meilleures
# Slicing depuis le début (index 0 implicite)
print(txt[:22])    # Affiche : Les meilleures choses
# Slicing jusqu'à la fin
print(txt[26:])    # Affiche : la vie sont gratuites !
# Indexation négative : depuis la fin de la chaîne
print(txt[-10:-1]) # Affiche : gratuites
# Slicing avec pas (step) : récupère 1 caractère sur 2
print(txt[::2])    # Affiche chaque 2e caractère
# Inverser une chaîne avec slicing
print(txt[::-1])   # Affiche la chaîne à l'envers

Méthodes intégrées de manipulation des strings Python

Python dispose d'un riche ensemble de méthodes intégrées pour manipuler les chaînes de caractères. Ces méthodes ne modifient pas la chaîne originale (les strings sont immuables), mais retournent une nouvelle chaîne transformée.

Conversion de casse : upper(), lower(), capitalize(), title()

Python propose plusieurs méthodes pour convertir la casse d'une chaîne. upper() met tout en majuscules, lower() en minuscules, capitalize() met uniquement la première lettre en majuscule, et title() capitalise chaque mot.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# upper() : convertit tous les caractères en MAJUSCULES
print(txt.upper())       # LES MEILLEURES CHOSES DE LA VIE SONT GRATUITES!
# lower() : convertit tous les caractères en minuscules
print(txt.lower())       # les meilleures choses de la vie sont gratuites!
# capitalize() : première lettre en majuscule, reste en minuscule
print(txt.capitalize())  # Les meilleures choses de la vie sont gratuites!
# title() : chaque mot commence par une majuscule
print(txt.title())       # Les Meilleures Choses De La Vie Sont Gratuites!

Supprimer les espaces : strip(), lstrip(), rstrip()

La méthode strip() supprime les espaces blancs (espaces, tabulations, sauts de ligne) en début et fin de chaîne — très utile pour nettoyer les entrées utilisateur.

  📋 Copier le code

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

Remplacer une sous-chaîne : replace()

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

  📋 Copier le code

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

Diviser une chaîne : split() et join()

La méthode split(séparateur) découpe une chaîne en une liste de sous-chaînes selon un séparateur. La méthode join() fait l'inverse : elle fusionne une liste en une chaîne.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# split(" ") : divise selon l'espace comme séparateur
mots = txt.split(" ")
print(mots)
# Résultat : ['Les', 'meilleures', 'choses', 'de', 'la', 'vie', 'sont', 'gratuites!']
# join() : l'inverse de split() - reconstitue la chaîne
reconstitue = "-".join(mots)
print(reconstitue)
# Résultat : Les-meilleures-choses-de-la-vie-sont-gratuites!

Concaténation de chaînes Python

La concaténation consiste à assembler plusieurs chaînes en une seule. En Python, l'opérateur + permet de fusionner des chaînes. Attention : on ne peut pas concaténer directement une chaîne avec un entier sans conversion via str().

  📋 Copier le code

# Concaténation avec l'opérateur +
a = "Les meilleures choses"
b = "de la vie sont gratuites!"
c = a + " " + b   # Ajoute un espace entre les deux chaînes
print(c)
# Résultat : Les meilleures choses de la vie sont gratuites!
# Répétition d'une chaîne avec *
separateur = "-" * 30
print(separateur)  # Affiche 30 tirets

Formatage des chaînes Python : f-strings et format()

Pour insérer des variables dans une chaîne, Python offre plusieurs techniques. La méthode moderne et recommandée depuis Python 3.6 est le f-string (chaîne formatée). L'ancienne méthode format() reste valide et compatible avec les versions antérieures.

  📋 Copier le code

# Méthode recommandée : f-string (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 directement
prix = 49.95
quantite = 3
print(f"Total : {prix * quantite:.2f} €")  # Total : 149.85 €
# Méthode classique : format() avec placeholders {}
quantite = 3
article = 567
prix = 49.95
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))

Caractères d'échappement dans les strings Python

Un caractère d'échappement est une séquence spéciale commençant par une barre oblique inversée \, permettant d'insérer des caractères qui seraient autrement illégaux ou impossibles à écrire dans une chaîne. Par exemple, insérer un guillemet double dans une chaîne délimitée par des guillemets doubles.

  📋 Copier le code

# \" : guillemet double dans une chaîne avec guillemets doubles
txt = "Nous sommes les soi-disant \"Militants\" pour la nature."
print(txt)  # Nous sommes les soi-disant "Militants" pour la nature.
# \' : guillemet simple dans une chaîne avec guillemets simples
txt2 = 'C\'est une belle journée.'
print(txt2)
# \n : saut de ligne
print("Ligne 1\nLigne 2\nLigne 3")
# \t : tabulation horizontale
print("Colonne 1\tColonne 2\tColonne 3")
# \\ : barre oblique inversée littérale
print("Chemin Windows : C:\\Users\\nom\\Documents")

Méthodes avancées : find(), count(), startswith(), endswith()

Python propose des méthodes de recherche avancées pour localiser des sous-chaînes, compter des occurrences et vérifier les préfixes/suffixes d'une chaîne.

  📋 Copier le code

txt = "Les meilleures choses de la vie sont gratuites!"
# find() : retourne l'index de la 1ère occurrence (-1 si absent)
print(txt.find("vie"))     # Affiche : 28
print(txt.find("argent"))  # Affiche : -1 (absent)
# count() : compte le nombre d'occurrences
print(txt.count("es"))     # Compte combien de fois "es" apparaît
# startswith() et endswith() : vérifient le début et la fin
print(txt.startswith("Les"))        # True
print(txt.endswith("gratuites!"))   # True
# Vérifier le type de caractères
print("12345".isdigit())    # True : que des chiffres
print("Python".isalpha())   # True : que des lettres
print("  ".isspace())       # True : que des espaces

Par carabde | Mis à jour le 23 février 2026