Qu'est-ce qu'un string (chaîne de caractères) en Python ?

Découvrez ce qu'est un string en Python : création, manipulation, méthodes essentielles, formatage et bonnes pratiques pour maîtriser les chaînes de caractères.
11 min de lecture
Believemy logo

Les chaînes de caractères, appelées strings en anglais, sont l'un des types de données les plus utilisés en Python. Que vous souhaitiez afficher un message à l'écran avec print, stocker un nom d'utilisateur ou manipuler du texte, vous travaillerez constamment avec des strings. Si vous souhaitez maîtriser Python en profondeur, notre formation complète sur Python vous guidera pas à pas dans l'apprentissage de ce langage, y compris la manipulation avancée des chaînes de caractères.

 

Définition d'un string en Python

Un string (ou str) est une séquence ordonnée et immuable de caractères Unicode. En Python, un string est un objet de type str qui peut contenir des lettres, des chiffres, des symboles, des espaces et même des caractères spéciaux. L'immuabilité signifie qu'une fois créé, un string ne peut pas être modifié directement : toute opération de transformation renvoie un nouveau string.

Bon à savoir

En Python 3, tous les strings sont encodés en Unicode par défaut, ce qui permet de gérer nativement les caractères accentués, les emojis et les alphabets non latins.

Vous pouvez créer un string de plusieurs façons :

PYTHON
# Avec des guillemets simples
nom = 'Alice'

# Avec des guillemets doubles
message = "Bonjour le monde"

# Avec des triples guillemets (pour les strings multilignes)
description = """Ceci est
un string
sur plusieurs lignes"""

# Avec des triples guillemets simples
autre_description = '''Ceci fonctionne
également sur
plusieurs lignes'''

Les guillemets simples et doubles sont fonctionnellement identiques. Le choix dépend souvent du contenu : si votre texte contient une apostrophe, utilisez des guillemets doubles, et inversement.

PYTHON
# Apostrophe dans le texte : guillemets doubles recommandés
phrase = "L'apprentissage de Python est passionnant"

# Guillemets dans le texte : guillemets simples recommandés
citation = 'Il a dit "bonjour" en entrant'

 

Les opérations de base sur les strings

Concaténation et répétition

Python permet de combiner des strings avec l'opérateur + (concaténation) et de les répéter avec l'opérateur * :

PYTHON
# Concaténation
prenom = "Jean"
nom = "Dupont"
nom_complet = prenom + " " + nom
print(nom_complet)  # Jean Dupont

# Répétition
separateur = "-" * 30
print(separateur)  # ------------------------------

# Concaténation avec +=
salutation = "Bonjour"
salutation += " tout le monde !"
print(salutation)  # Bonjour tout le monde !

 

Accéder aux caractères : indexation et slicing

Chaque caractère d'un string possède un index, commençant à 0 pour le premier caractère. Python supporte également l'indexation négative, où -1 désigne le dernier caractère :

PYTHON
mot = "Python"

# Indexation positive
print(mot[0])   # P
print(mot[1])   # y
print(mot[5])   # n

# Indexation négative
print(mot[-1])  # n
print(mot[-2])  # o

# Slicing (extraction de sous-chaînes)
print(mot[0:3])   # Pyt
print(mot[2:])    # thon
print(mot[:4])    # Pyth
print(mot[::2])   # Pto (un caractère sur deux)
print(mot[::-1])  # nohtyP (string inversé)
Attention

Attention : tenter d'accéder à un index qui dépasse la longueur du string provoque une erreur IndexError. Utilisez la fonction len pour vérifier la taille d'un string avant d'y accéder.

 

Longueur d'un string

La fonction intégrée len retourne le nombre de caractères d'un string :

PYTHON
texte = "Bonjour Python"
print(len(texte))  # 14

# Les espaces comptent comme des caractères
print(len(" "))    # 1

# Un string vide a une longueur de 0
print(len(""))     # 0

 

Les méthodes essentielles des strings

Python fournit un grand nombre de méthodes intégrées pour manipuler les strings. Voici les plus courantes, regroupées par catégorie :

Transformation de casse

MéthodeDescriptionExempleRésultat
.upper()Convertit en majuscules"python".upper()"PYTHON"
.lower()Convertit en minuscules"PYTHON".lower()"python"
.capitalize()Première lettre en majuscule"python".capitalize()"Python"
.title()Première lettre de chaque mot en majuscule"bonjour le monde".title()"Bonjour Le Monde"
.swapcase()Inverse la casse"PyThOn".swapcase()"pYtHoN"
PYTHON
email = "  Utilisateur@Example.COM  "

# Normaliser un email
email_normalise = email.strip().lower()
print(email_normalise)  # utilisateur@example.com

 

Recherche et vérification

PYTHON
phrase = "Python est un langage de programmation puissant"

# Vérifier la présence d'un mot
print("Python" in phrase)        # True
print("Java" in phrase)           # False

# Trouver la position d'un sous-string
print(phrase.find("langage"))      # 15
print(phrase.find("Java"))         # -1 (non trouvé)

# index() lève une exception si non trouvé
# print(phrase.index("Java"))      # ValueError

# Compter les occurrences
texte = "abracadabra"
print(texte.count("a"))            # 5

# Vérifications de début et fin
fichier = "rapport_2024.pdf"
print(fichier.startswith("rapport"))  # True
print(fichier.endswith(".pdf"))       # True

 

Méthodes de test

Python offre plusieurs méthodes pour tester la nature des caractères contenus dans un string :

PYTHON
# Vérifier le type de contenu
print("12345".isdigit())      # True
print("abc".isalpha())        # True
print("abc123".isalnum())     # True
print("   ".isspace())        # True
print("Bonjour".istitle())    # True
print("PYTHON".isupper())     # True
print("python".islower())     # True

 

Nettoyage et remplacement

PYTHON
# Supprimer les espaces inutiles
texte = "   Bonjour Python   "
print(texte.strip())    # "Bonjour Python"
print(texte.lstrip())   # "Bonjour Python   "
print(texte.rstrip())   # "   Bonjour Python"

# Remplacer des sous-chaînes
phrase = "J'aime le Java, le Java est génial"
nouvelle = phrase.replace("Java", "Python")
print(nouvelle)  # J'aime le Python, le Python est génial

# Remplacer seulement la première occurrence
nouvelle = phrase.replace("Java", "Python", 1)
print(nouvelle)  # J'aime le Python, le Java est génial

 

Découpage et jonction

Les méthodes split() et join() sont fondamentales pour convertir entre des strings et des list :

PYTHON
# Découper un string en liste
phrase = "Python est fantastique"
mots = phrase.split()
print(mots)  # ['Python', 'est', 'fantastique']

# Découper avec un séparateur personnalisé
csv_ligne = "Alice,30,Paris,Développeuse"
valeurs = csv_ligne.split(",")
print(valeurs)  # ['Alice', '30', 'Paris', 'Développeuse']

# Joindre une liste en string
mots = ['Python', 'est', 'génial']
resultat = " ".join(mots)
print(resultat)  # Python est génial

# Joindre avec un autre séparateur
chemin = "/".join(["home", "user", "documents"])
print(chemin)  # home/user/documents

 

Le formatage des strings

Le formatage permet d'insérer dynamiquement des valeurs dans un string. Python propose plusieurs approches, mais les f-string sont la méthode recommandée depuis Python 3.6.

Les f-strings (méthode recommandée)

PYTHON
nom = "Alice"
age = 30
ville = "Paris"

# F-string basique
print(f"Je m'appelle {nom} et j'ai {age} ans.")
# Je m'appelle Alice et j'ai 30 ans.

# Expressions dans les f-strings
print(f"Dans 5 ans, j'aurai {age + 5} ans.")
# Dans 5 ans, j'aurai 35 ans.

# Appels de méthodes
print(f"Mon nom en majuscules : {nom.upper()}")
# Mon nom en majuscules : ALICE

# Formatage de nombres
prix = 49.99
print(f"Prix : {prix:.2f} €")      # Prix : 49.99 €
print(f"Prix : {prix:>10.2f} €")   # Prix :      49.99 €

grand_nombre = 1000000
print(f"Population : {grand_nombre:,}")  # Population : 1,000,000

 

La méthode format()

PYTHON
# Positional arguments
print("Je m'appelle {} et j'ai {} ans.".format("Alice", 30))

# Named arguments
print("Je m'appelle {nom} et j'habite à {ville}.".format(nom="Alice", ville="Paris"))

# Index arguments
print("{0} aime {1}, mais {1} n'aime pas {0}.".format("Alice", "Bob"))

 

L'opérateur % (ancienne méthode)

PYTHON
# Ancienne méthode avec l'opérateur %
nom = "Alice"
age = 30
print("Je m'appelle %s et j'ai %d ans." % (nom, age))
Bon à savoir

Les f-string sont non seulement plus lisibles, mais aussi plus performantes que les autres méthodes de formatage. Privilégiez-les systématiquement dans vos projets Python modernes.

 

Les caractères d'échappement

Les caractères d'échappement permettent d'insérer des caractères spéciaux dans un string à l'aide du backslash \ :

SéquenceDescription
\nNouvelle ligne
\tTabulation
\\Backslash littéral
\'Guillemet simple
\"Guillemet double
\0Caractère null
\uCaractère Unicode (ex: \u00E9 pour é)
PYTHON
# Exemples de caractères d'échappement
print("Première ligne\nDeuxième ligne")
# Première ligne
# Deuxième ligne

print("Nom\tPrénom\tÂge")
# Nom	Prénom	Âge

print("Il a dit \"bonjour\"")
# Il a dit "bonjour"

# Raw strings : désactivent les caractères d'échappement
chemin = r"C:\Users\nom\documents"
print(chemin)  # C:\Users\nom\documents

 

Les strings et l'itération

Un string étant une séquence, vous pouvez le parcourir caractère par caractère, ou utiliser des fonctions comme enumerate pour obtenir simultanément l'index et le caractère :

PYTHON
mot = "Python"

# Parcourir chaque caractère
for caractere in mot:
    print(caractere, end=" ")
# P y t h o n

print()  # Retour à la ligne

# Avec enumerate pour avoir l'index
for index, caractere in enumerate(mot):
    print(f"Index {index} : {caractere}")
# Index 0 : P
# Index 1 : y
# Index 2 : t
# Index 3 : h
# Index 4 : o
# Index 5 : n

Vous pouvez également utiliser des list comprehensions pour transformer chaque caractère d'un string :

PYTHON
mot = "Python"

# Créer une liste des codes Unicode de chaque caractère
codes = [ord(c) for c in mot]
print(codes)  # [80, 121, 116, 104, 111, 110]

# Filtrer certains caractères
voyelles = [c for c in mot if c.lower() in 'aeiouy']
print(voyelles)  # ['y', 'o']

 

Conversion vers et depuis les strings

Python facilite la conversion entre les strings et d'autres types de données :

PYTHON
# Convertir en string
nombre = 42
flottant = 3.14
ma_liste = [1, 2, 3]

print(str(nombre))     # "42"
print(str(flottant))   # "3.14"
print(str(ma_liste))   # "[1, 2, 3]"

# Convertir depuis un string
print(int("42"))        # 42
print(float("3.14"))    # 3.14

# Convertir un string en liste de caractères
caracteres = list("Python")
print(caracteres)  # ['P', 'y', 't', 'h', 'o', 'n']

# Convertir un string en tuple
t = tuple("Python")
print(t)  # ('P', 'y', 't', 'h', 'o', 'n')
Attention

Soyez prudent lors de la conversion d'un string en nombre. Si le string ne contient pas une valeur numérique valide, Python lèvera une exception ValueError. Utilisez un bloc try/except pour gérer ces cas.

 

Les strings multilignes et les docstrings

Les triples guillemets permettent de créer des strings sur plusieurs lignes. Ils sont aussi utilisés pour les docstring, qui documentent les fonctions, classes et modules :

PYTHON
def calculer_aire(longueur, largeur):
    """Calcule l'aire d'un rectangle.
    
    Args:
        longueur: La longueur du rectangle.
        largeur: La largeur du rectangle.
    
    Returns:
        L'aire du rectangle (longueur * largeur).
    """
    return longueur * largeur

# Accéder à la docstring
print(calculer_aire.__doc__)

 

Bonnes pratiques avec les strings en Python

1. Utilisez les f-strings pour le formatage : les f-string sont la méthode la plus lisible et la plus performante. Évitez l'opérateur % dans du code moderne.

2. Utilisez join() pour concaténer plusieurs strings : la concaténation avec + dans une boucle crée de nombreux objets intermédiaires. Utilisez plutôt "".join() :

PYTHON
# ❌ Inefficace
resultat = ""
for mot in ["Python", "est", "génial"]:
    resultat += mot + " "

# ✅ Efficace
resultat = " ".join(["Python", "est", "génial"])

3. Utilisez in pour vérifier la présence d'un sous-string : c'est plus lisible que d'utiliser find() pour un simple test de présence.

PYTHON
# ❌ Moins lisible
if phrase.find("Python") != -1:
    print("Trouvé")

# ✅ Plus lisible
if "Python" in phrase:
    print("Trouvé")

4. Normalisez les strings pour les comparaisons : utilisez .lower() ou .casefold() pour des comparaisons insensibles à la casse :

PYTHON
entree_utilisateur = "Python"
if entree_utilisateur.lower() == "python":
    print("Correspondance trouvée !")

# casefold() est plus agressif pour les caractères internationaux
print("straße".casefold())  # strasse

5. N'oubliez pas que les strings sont immuables : chaque modification crée un nouveau string. Si vous devez effectuer de nombreuses modifications, envisagez d'utiliser une list de caractères puis de la joindre.

 

Questions fréquentes

Question

Quelle est la différence entre les guillemets simples et doubles en Python ?

Il n'y a aucune différence fonctionnelle entre les guillemets simples ('...') et doubles ("...") en Python. Les deux créent un objet str identique. Le choix est une question de style et de praticité : utilisez des guillemets doubles si votre texte contient des apostrophes, et inversement. La convention PEP 8 n'impose pas de préférence, mais la cohérence au sein d'un projet est recommandée.

 

Question

Les strings sont-ils immuables en Python ?

Oui, les strings sont immuables en Python. Cela signifie que vous ne pouvez pas modifier un caractère à un index donné (par exemple mon_string[0] = "A" provoquera une erreur TypeError). Toute opération qui semble modifier un string (comme replace(), upper(), ou la concaténation) crée en réalité un nouveau string. Cette immuabilité permet aux strings d'être utilisés comme clés dans les dict et comme éléments dans les sets.

 

Question

Comment convertir un string en nombre en Python ?

Utilisez int() pour convertir en entier et float() pour convertir en nombre à virgule flottante. Par exemple : int("42") retourne 42 et float("3.14") retourne 3.14. Si le string n'est pas un nombre valide, Python lèvera une exception ValueError. Vous pouvez utiliser la méthode .isdigit() pour vérifier au préalable si un string ne contient que des chiffres, ou un bloc try/except pour gérer les erreurs de conversion de manière robuste.

 

Question

Comment apprendre à manipuler les strings et Python en général ?

La manipulation des strings est une compétence fondamentale en Python. Pour acquérir une maîtrise complète du langage, des bases aux concepts avancés comme les expressions régulières et le traitement de données textuelles, nous vous recommandons de suivre notre formation dédiée à Python sur Believemy. Vous y trouverez des exercices pratiques, des projets concrets et un accompagnement structuré pour progresser efficacement.

Termes connexes

Découvrez notre glossaire Python

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement avec Python.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.