06 - Chaînes de caractères
Définition
Une chaîne de caractères (type str) est une séquence de caractères. C’est le type utilisé par Python pour représenter du texte : un prénom, une phrase, un mot de passe, une adresse e-mail, etc.
On crée une chaîne en plaçant du texte entre guillemets " ou apostrophes ' :
prenom = "Alice"
ville = 'Paris'
print(prenom, "habite à", ville)
Alice habite à Paris
Les deux notations sont équivalentes. Les guillemets doubles sont pratiques lorsque la chaîne contient une apostrophe, et inversement :
phrase1 = "L'informatique est passionnante"
phrase2 = 'Il a dit "bonjour" en entrant'
print(phrase1)
print(phrase2)
L'informatique est passionnante
Il a dit "bonjour" en entrant
Si une chaîne doit contenir à la fois des guillemets et des apostrophes, on utilise le caractère d’échappement \ :
mixte = "Elle a dit : \"c'est formidable\""
print(mixte)
Elle a dit : "c'est formidable"
Longueur d’une chaîne
La fonction len() renvoie le nombre de caractères d’une chaîne :
mot = "Python"
print(len(mot)) # 6
vide = ""
print(len(vide)) # 0
phrase = "Bonjour !"
print(len(phrase)) # 9 (l'espace et le ! comptent)
Accès aux caractères
Les caractères d’une chaîne sont numérotés à partir de zéro. On accède à un caractère en indiquant son indice entre crochets :
mot = "Python"
print(mot[0]) # P (premier caractère)
print(mot[3]) # h (quatrième caractère)
print(mot[-1]) # n (dernier caractère)
print(mot[-2]) # o (avant-dernier)
Éléments : P y t h o n
Indices + : 0 1 2 3 4 5
Indices - : -6 -5 -4 -3 -2 -1
Attention : un indice hors limites provoque une erreur IndexError.
Immutabilité
Les chaînes sont immuables : on ne peut pas modifier un caractère en place.
mot = "Python"
mot[0] = "J" # TypeError: 'str' object does not support item assignment
Pour obtenir une chaîne modifiée, il faut en construire une nouvelle :
mot = "Python"
nouveau = "J" + mot[1:]
print(nouveau) # Jython
Concaténation et répétition
L’opérateur + concatène (assemble) deux chaînes, et l’opérateur * répète une chaîne :
prenom = "Ada"
nom = "Lovelace"
complet = prenom + " " + nom
print(complet) # Ada Lovelace
tirets = "-" * 20
print(tirets) # --------------------
motif = "ab" * 4
print(motif) # abababab
Attention : on ne peut pas concaténer une chaîne et un nombre directement :
age = 17
# print("J'ai " + age + " ans") # TypeError !
print("J'ai " + str(age) + " ans") # correct
Les f-strings
Les f-strings (chaînes formatées, depuis Python 3.6) permettent d’insérer des variables et des expressions directement dans une chaîne, en les plaçant entre accolades {} :
prenom = "Alice"
age = 17
print(f"{prenom} a {age} ans")
print(f"Dans 10 ans, {prenom} aura {age + 10} ans")
Alice a 17 ans
Dans 10 ans, Alice aura 27 ans
On peut aussi contrôler le format d’affichage :
import math
# Arrondir un flottant
print(f"Pi vaut environ {math.pi:.2f}") # 3.14
# Aligner à droite sur 10 caractères
print(f"{'Alice':>10}") # Alice
# Afficher un pourcentage
ratio = 0.85
print(f"Réussite : {ratio:.0%}") # Réussite : 85%
Pi vaut environ 3.14
Alice
Réussite : 85%
Caractères spéciaux
Certains caractères ne sont pas directement saisissables. On les écrit à l’aide de séquences d’échappement commençant par \ :
| Séquence | Signification |
|---|---|
\n | Retour à la ligne |
\t | Tabulation |
\\ | Le caractère \ lui-même |
\' | Apostrophe |
\" | Guillemet |
print("Ligne 1\nLigne 2")
print("Nom\tPrénom\tÂge")
print("Alice\tDupont\t17")
Ligne 1
Ligne 2
Nom Prénom Âge
Alice Dupont 17
Chaînes multilignes
Pour écrire une chaîne sur plusieurs lignes, on utilise les triples guillemets """ ou ''' :
poeme = """Ceci est un texte
qui s'étend sur
plusieurs lignes."""
print(poeme)
Ceci est un texte
qui s'étend sur
plusieurs lignes.
Test d’appartenance
L’opérateur in teste si une sous-chaîne est présente dans une chaîne :
phrase = "Bienvenue en NSI"
print("NSI" in phrase) # True
print("nsi" in phrase) # False (sensible à la casse)
print("venu" in phrase) # True
Résumé
| Opération | Syntaxe | Exemple |
|---|---|---|
| Création | "..." ou '...' | "Bonjour" |
| Longueur | len(s) | len("NSI") → 3 |
| Accès | s[i] | "NSI"[0] → "N" |
| Immutabilité | on ne peut pas modifier s[i] | construire une nouvelle chaîne |
| Concaténation | s1 + s2 | "Bon" + "jour" → "Bonjour" |
| Répétition | s * n | "ab" * 3 → "ababab" |
| Appartenance | x in s | "a" in "abc" → True |
| f-string | f"...{var}..." | f"J'ai {age} ans" |
La suite. Les méthodes de manipulation des chaînes (parcours, recherche, découpage, etc.) sont présentées dans le chapitre suivant : 07 - Chaînes : méthodes .