W3docs

Découpage de chaînes de caractères

Apprenez le découpage de chaînes Python avec la syntaxe, les diagrammes d'indices, les valeurs de pas, les indices négatifs et des exemples pratiques.

Découpage de chaînes Python

Le découpage de chaînes vous permet d'extraire une sous-chaîne d'une chaîne plus grande en spécifiant où commencer, où s'arrêter et combien de caractères sauter à chaque fois. C'est l'une des opérations sur les chaînes les plus courantes en Python, utilisée partout, de l'analyse des noms de fichiers à l'inversion de mots.

Ce chapitre couvre :

  • La syntaxe [start:stop:step] et la façon dont les indices correspondent aux caractères
  • L'omission de start ou stop (découper depuis le début ou jusqu'à la fin)
  • Les indices négatifs (compter depuis la droite)
  • Le paramètre step (sauter des caractères, inverser une chaîne)
  • Les pièges courants : indices hors limites, tranches vides
  • Des exemples pratiques que vous pouvez exécuter immédiatement

Si vous débutez avec les chaînes en Python, lisez d'abord le chapitre Python Strings — il explique comment les chaînes sont créées et indexées.

Fonctionnement des indices de chaînes

Chaque caractère d'une chaîne Python possède deux indices : un positif (en comptant depuis la gauche, en commençant à 0) et un négatif (en comptant depuis la droite, en commençant à -1).

Pour la chaîne "Hello, World!" :

 H   e   l   l   o   ,       W   o   r   l   d   !
 0   1   2   3   4   5   6   7   8   9  10  11  12   ← positive
-13 -12 -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1  ← negative

La syntaxe complète de découpage est :

string[start:stop:step]
  • start — indice du premier caractère à inclure (par défaut : 0)
  • stop — indice du premier caractère à exclure (par défaut : fin de la chaîne)
  • step — nombre de caractères à avancer à chaque fois (par défaut : 1)

L'indice stop est exclusif — le caractère à la position stop n'est jamais inclus dans le résultat.

Découpage de base

Fournissez un indice de début et de fin séparés par deux-points pour extraire les caractères situés entre eux.

python— editable, runs on the server

my_string[0:3] retourne les caractères aux positions 0, 1 et 2 — le caractère à l'indice 3 ('l') n'est pas inclus.

Omettre le début ou la fin

Omettez start pour commencer depuis le tout premier caractère, ou omettez stop pour continuer jusqu'au tout dernier caractère.

python— editable, runs on the server

my_string[:] est un idiome courant pour copier une chaîne (bien que les chaînes soient immuables en Python, cela retourne simplement la même valeur).

Indices négatifs

Les indices négatifs comptent à rebours depuis la fin de la chaîne. -1 désigne le dernier caractère, -2 l'avant-dernier, et ainsi de suite.

python— editable, runs on the server

Un schéma utile : my_string[-n:] vous donne toujours les n derniers caractères, quelle que soit la longueur de la chaîne.

Le paramètre step

Le troisième argument du découpage est le pas (step). Il contrôle le nombre de positions dont Python avance après chaque caractère sélectionné.

python— editable, runs on the server

Inverser une chaîne

Définissez le pas à -1 pour itérer de droite à gauche. C'est la façon idiomatique d'inverser une chaîne en Python :

python— editable, runs on the server

Vous pouvez combiner un pas négatif avec des indices de début et de fin. Souvenez-vous : lorsque le pas est négatif, start doit être supérieur à stop.

my_string = "Hello, World!"
print(my_string[10:2:-1])  # 'lroW ,ol' — from index 10 down to (not including) index 2

Consultez le chapitre Reverse a String pour plus de techniques, notamment reversed() et ''.join().

Combiner start, stop et step

Les trois parties fonctionnent ensemble. Pensez à la tranche comme à une boucle for qui commence à start, s'arrête avant stop et s'incrémente de step.

python— editable, runs on the server
python— editable, runs on the server

Indices hors limites

Contrairement à l'indexation directe (qui lève une IndexError pour un indice hors limites), le découpage gère les valeurs hors limites de façon souple en les limitant aux bornes de la chaîne.

my_string = "Hello, World!"

# Stop index beyond the string length — no error
print(my_string[7:100])  # 'World!'

# Start index beyond the string length — returns empty string
print(my_string[50:60])  # ''

# Direct index access would raise IndexError:
# print(my_string[100])  # IndexError: string index out of range

Cela rend le découpage sûr pour les schémas du type « donnez-moi jusqu'à N caractères » sans avoir besoin de vérifier len() au préalable.

Exemples pratiques

Extraire une extension de fichier

filename = "report.pdf"
extension = filename[-3:]
print(extension)  # 'pdf'

Extraire le domaine d'une adresse e-mail

email = "[email protected]"
at_index = email.index("@")
domain = email[at_index + 1:]
print(domain)  # 'example.com'

Tronquer une longue chaîne avec des points de suspension

def truncate(text, max_length):
    if len(text) <= max_length:
        return text
    return text[:max_length - 3] + "..."

print(truncate("Hello, World!", 8))   # 'Hello...'
print(truncate("Hi", 8))             # 'Hi'

Vérifier si une chaîne est un palindrome

word = "racecar"
is_palindrome = word == word[::-1]
print(is_palindrome)  # True

Référence rapide

ExpressionSignification
s[a:b]Caractères de l'indice a jusqu'à (non inclus) b
s[:b]Depuis le début jusqu'à (non inclus) b
s[a:]De l'indice a jusqu'à la fin
s[:]Copie complète
s[a:b:n]Chaque n-ième caractère de a à b
s[::-1]Chaîne inversée
s[-n:]Les n derniers caractères
s[:-n]Tout sauf les n derniers caractères

À lire ensuite

Pratique

Pratique
What does the slice `s[2:5]` return for the string `'Python'`?
What does the slice `s[2:5]` return for the string `'Python'`?
Was this page helpful?