Méthodes de chaînes Python
Maîtrisez les méthodes de chaînes Python : strip, split, join, replace, find, upper, lower et bien plus — avec des exemples exécutables et des cas pratiques.
Les chaînes en Python disposent d'un riche ensemble de méthodes intégrées qui couvrent presque toutes les manipulations dont vous aurez besoin — supprimer les espaces, rechercher, diviser, joindre, vérifier le contenu et formater. Comme les chaînes sont immuables, chaque méthode retourne une nouvelle chaîne (ou une autre valeur) plutôt que de modifier l'originale.
Ce chapitre couvre les méthodes de chaînes les plus importantes, regroupées par objectif, avec des exemples et des pièges courants. Pour des informations sur la création et l'indexation des chaînes, consultez le chapitre Python Strings. Pour la syntaxe de découpage, voir Slicing Strings.
Conversion de casse
upper() et lower()
upper() renvoie une copie de la chaîne avec toutes les lettres converties en majuscules ; lower() fait l'inverse.
Ces méthodes ne tiennent pas compte des paramètres régionaux pour les lettres ASCII. Pour une gestion correcte de la casse selon les paramètres régionaux (par exemple le I turc pointé), utilisez le module locale ou des bibliothèques tierces.
title() et capitalize()
title() met en majuscule la première lettre de chaque mot. capitalize() met en majuscule uniquement le premier caractère de toute la chaîne et met tout le reste en minuscules.
s = "hello world"
print(s.title()) # Hello World
print(s.capitalize()) # Hello worldPiège : title() traite tout caractère non alphabétique comme une limite de mot, donc "it's" devient "It'S". Utilisez la fonction string.capwords() de la bibliothèque standard lorsque vous avez besoin d'une détection de mots plus intelligente.
swapcase()
Inverse la casse de chaque caractère — les majuscules deviennent des minuscules et vice versa.
print("Hello World".swapcase()) # hELLO wORLDEspaces et remplissage
strip(), lstrip() et rstrip()
Ces méthodes suppriment les caractères en début et/ou en fin de chaîne (les espaces par défaut).
s = " Hello World "
print(s.strip()) # "Hello World"
print(s.lstrip()) # "Hello World "
print(s.rstrip()) # " Hello World"Vous pouvez passer une chaîne de caractères à supprimer — non pas un préfixe/suffixe, mais toute combinaison de ces caractères :
print("***hello***".strip("*")) # hello
print("xyzhelloyz".strip("xyz")) # hellocenter(), ljust() et rjust()
Remplit une chaîne jusqu'à une largeur donnée. Un caractère de remplissage optionnel (par défaut : espace) comble l'espace supplémentaire.
print("hi".center(10)) # " hi "
print("hi".ljust(10, "-")) # "hi--------"
print("hi".rjust(10, "-")) # "--------hi"Ces méthodes sont utiles pour construire des tableaux de texte à largeur fixe.
zfill()
Remplit une chaîne numérique avec des zéros non significatifs pour atteindre une largeur donnée. Elle respecte un signe + ou - en tête.
print("42".zfill(5)) # 00042
print("-7".zfill(5)) # -0007Recherche et comptage
find() et rfind()
find(sub) retourne l'indice le plus bas où sub est trouvé, ou -1 s'il n'est pas trouvé. rfind(sub) trouve l'indice le plus élevé (le plus à droite).
s = "Hello World"
print(s.find("World")) # 6
print(s.find("xyz")) # -1
print(s.rfind("l")) # 9Ces deux méthodes acceptent des arguments optionnels start et end pour limiter la plage de recherche.
index() et rindex()
Fonctionnent exactement comme find() et rfind(), mais lèvent une ValueError au lieu de retourner -1 lorsque la sous-chaîne n'est pas trouvée. Utilisez find() lorsque l'absence est un cas normal ; utilisez index() lorsque l'absence signifie qu'un problème est survenu.
s = "Hello World"
print(s.index("World")) # 6
# s.index("xyz") # raises ValueErrorcount()
Retourne le nombre d'occurrences non chevauchantes d'une sous-chaîne.
print("banana".count("a")) # 3
print("banana".count("an")) # 2
print("aaaa".count("aa")) # 2 (non-overlapping)startswith() et endswith()
Retournent True si la chaîne commence ou se termine par le préfixe/suffixe donné. Les deux acceptent un tuple de chaînes pour vérifier plusieurs options à la fois.
filename = "report.pdf"
print(filename.startswith("report")) # True
print(filename.endswith(".pdf")) # True
print(filename.endswith((".pdf", ".docx"))) # TrueC'est souvent plus lisible que le découpage : filename[-4:] == ".pdf".
Remplacement et division
replace(old, new, count=-1)
Retourne une copie avec chaque occurrence de old remplacée par new. Passez un entier comme troisième argument pour limiter le nombre de remplacements.
replace() effectue une correspondance littérale exacte ; pour un remplacement basé sur des motifs, utilisez la fonction re.sub() du chapitre Python Regex.
split(sep=None, maxsplit=-1)
Divise la chaîne sur sep et retourne une liste. Lorsque sep est omis (ou None), il divise sur tout espace blanc et supprime les chaînes vides — idéal pour la tokenisation des entrées utilisateur.
split() retourne toujours une liste, même lorsque le délimiteur est absent (la liste contient simplement la chaîne originale).
rsplit(sep=None, maxsplit=-1)
Similaire à split(), mais commence par la droite. Utile lorsque vous souhaitez uniquement les dernières parties d'une chaîne.
path = "/home/user/documents/file.txt"
print(path.rsplit("/", 1)) # ['/home/user/documents', 'file.txt']splitlines()
Divise sur les limites de ligne (\n, \r\n, \r, et d'autres) et conserve optionnellement les fins de ligne.
text = "line one\nline two\r\nline three"
print(text.splitlines()) # ['line one', 'line two', 'line three']join(iterable)
L'inverse de split(). Concatène chaque élément d'un itérable, en plaçant la chaîne sur laquelle elle est appelée entre chaque élément. C'est la méthode préférée pour construire une chaîne à partir d'une liste, car Python la construit en une seule étape.
print(", ".join(["apples", "bananas", "cherries"]))
# apples, bananas, cherries
print("".join(["P", "y", "t", "h", "o", "n"]))
# PythonPour plus de détails, consultez le chapitre Concatenate Strings.
Vérification du contenu
Ces méthodes retournent True ou False et sont utiles pour la validation des entrées.
| Méthode | Retourne True quand… |
|---|---|
isalpha() | Tous les caractères sont des lettres |
isdigit() | Tous les caractères sont des chiffres (0–9) |
isnumeric() | Tous les caractères sont numériques (inclut ², ½, etc.) |
isalnum() | Tous les caractères sont des lettres ou des chiffres |
isspace() | Tous les caractères sont des espaces |
islower() | Tous les caractères avec casse sont en minuscules |
isupper() | Tous les caractères avec casse sont en majuscules |
istitle() | La chaîne est en casse de titre |
print("Python".isalpha()) # True
print("12345".isdigit()) # True
print("abc123".isalnum()) # True
print(" ".isspace()) # True
print("Hello World".istitle()) # TrueRemarque : Une chaîne vide retourne False pour toutes ces méthodes.
Longueur
len() est une fonction intégrée, pas une méthode de chaîne, mais elle est fondamentale pour le travail sur les chaînes.
Les chaînes sont indexées à partir de zéro, donc les indices valides vont de 0 à len(s) - 1.
Concaténation
L'opérateur + joint deux chaînes. L'opérateur * répète une chaîne un nombre de fois donné.
Pour joindre de nombreuses chaînes ou construire des chaînes dans une boucle, "".join(list) est nettement plus rapide que + dans une boucle. Voir Concatenate Strings pour une comparaison des performances.
Formatage
format() et les f-strings
str.format() insère des valeurs dans des espaces réservés {}. Les f-strings (Python 3.6+) font la même chose de manière plus concise et sont désormais le style préféré.
name = "Alice"
score = 95
# str.format()
print("Hello, {}! Your score is {}.".format(name, score))
# f-string (preferred)
print(f"Hello, {name}! Your score is {score}.")
# Hello, Alice! Your score is 95.Les deux prennent en charge les spécificateurs de format. Pour la syntaxe complète, voir Python String Formatting.
encode()
Convertit la chaîne en objet bytes en utilisant l'encodage donné (utf-8 par défaut).
s = "café"
print(s.encode("utf-8")) # b'caf\xc3\xa9'
print(s.encode("ascii", errors="replace")) # b'caf?'Référence rapide
| Méthode | Ce qu'elle fait |
|---|---|
s.upper() | Tout en majuscules |
s.lower() | Tout en minuscules |
s.title() | Casse de titre (chaque mot) |
s.capitalize() | Premier caractère en majuscule |
s.swapcase() | Inverser la casse |
s.strip(chars) | Supprimer les caractères en début/fin |
s.lstrip(chars) | Supprimer les caractères en début |
s.rstrip(chars) | Supprimer les caractères en fin |
s.center(w, fill) | Centrer dans un champ de largeur w |
s.ljust(w, fill) | Aligner à gauche dans un champ de largeur w |
s.rjust(w, fill) | Aligner à droite dans un champ de largeur w |
s.zfill(w) | Remplir avec des zéros non significatifs |
s.find(sub) | Indice le plus bas de sub, ou -1 |
s.rfind(sub) | Indice le plus élevé de sub, ou -1 |
s.index(sub) | Comme find() mais lève une ValueError |
s.count(sub) | Compter les occurrences non chevauchantes |
s.startswith(prefix) | True si la chaîne commence par le préfixe |
s.endswith(suffix) | True si la chaîne se termine par le suffixe |
s.replace(old, new) | Remplacer les occurrences |
s.split(sep) | Diviser en liste |
s.rsplit(sep) | Diviser depuis la droite |
s.splitlines() | Diviser sur les fins de ligne |
sep.join(iterable) | Joindre l'itérable avec le séparateur |
s.isalpha() | Toutes des lettres ? |
s.isdigit() | Tous des chiffres ? |
s.isalnum() | Toutes des lettres ou des chiffres ? |
s.isspace() | Tous des espaces ? |
s.format(...) | Formater avec des espaces réservés |
s.encode(enc) | Encoder en bytes |