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 ← negativeLa 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.
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.
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.
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é.
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 :
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 2Consultez 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.
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 rangeCela 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) # TrueRéférence rapide
| Expression | Signification |
|---|---|
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
- Python Strings — création de chaînes, indexation et immuabilité
- String Methods —
upper(),strip(),split(),replace(), et plus encore - Modify Strings — techniques pour transformer le contenu des chaînes
- Concatenate Strings — concaténer des chaînes avec
+etjoin() - Escape Characters —
\n,\t,\\, et autres séquences spéciales - Format Strings — intégrer des valeurs dans des chaînes avec les f-strings et
.format()