Python - Chaînes de caractères
[Mise à jour le : 18/8/2024]
- Sources
- Documentation sur Python.org : référence du langage, opérations usuelles sur les chaînes, fonctions natives (built-in)
- Mots-clés : collection, séquence, indexation, insertion, concaténation, formatage, accès, parcours, sélection.
and | continue | finally | is | raise |
as | def | for | lambda | return |
assert | del | from | None | True |
async | elif | global | nonlocal | try |
await | else | if | not | while |
break | except | import | or | with |
class | False | in | pass | yield |
- Fonctions natives (built-in)1) utilisées dans les exemples : print(), len(), ord(), chr().
1. Introduction
En programmation, le texte s'appelle chaîne de caractères. Une chaîne de caractères est une séquence, ce qui signifie que c'est une collection ordonnée de valeurs. Le premier élément de la chaîne est indexé par 0. Les chaînes de caractères sont des instances de la classe str.
Toutes les méthodes de manipulation des chaînes renvoient une chaîne de caractères.
Il faut encadrer le texte de guillemets simples ' ' ou doubles “ “.
Exemple
- *.py
# Deux variables pointent vers le même objet chaîne de caractères s1 = 'abc' s2 = s1
- *.py
# Si on essaie de modifier l'objet (+ : concaténation) s1 = s1 + 'def' # alors une deuxième chaîne est créée pour s1, # et s2 continue à pointer vers s1 initial
Exemple
2. Mise en forme du texte
Les caractères d'une chaîne sont mis en forme avec les méthodes de la classe str. Par exemple en minuscules avec la méthode lower, en majuscules avec la méthode upper, etc.
Exemple
- *.py
texte = "Le manuel de Python" # Conversion en majuscules print(texte.upper()) # Résultat : LE MANUEL DE PYTHON # Conversion en minuscules print(texte.lower()) # Résultat : le manuel de python
Exemple
- *.py
print("Ce texte s'affiche", end=" ") # Renvoie : Ce texte s'affiche sur une seule ligne. print("sur une seule ligne.", end=" ")
3. Formatage
- Depuis Python 3.6
- Source :
Bibliothèques Python
Exemple
- *.py
monscore = 1000 f"Vous avez obtenu {monscore} points" # Résultat : Vous avez obtenu 1000 points
Exemple
- *.py
texte1 = "Hello" texte2 = " World" texte3 = texte1 + texte2 # Résultat texte3 = "Hello World"
- Pour répéter des chaînes, on utilise l'opérateur * .
Exemple
- *.py
texte2 = " World" texte3 = texte2*3 # Résultat texte3 = " World World World"
- Avant python 3.6
Exemples
- *.py
score = 1000 # Utilisation de %s (à éviter, car lourd par rapport aux autres méthodes) points = "Vous avez obtenu %s points" print(points % score) # Résultat : Vous avez obtenu 1000 points # Utilisation de la méthode format() # Solution 1 print("Vous avez obtenu {0} points".format(score)) # Résultat : Vous avez obtenu 1000 points # Solution 2 print("Vous avez obtenu {score} points".format(score=monscore)) # Résultat : Vous avez obtenu 1000 points # Utilisation de virgules print("Vous avez obtenu",monscore,"points") # Résultat : Vous avez obtenu 1000 points
4. Longueur d'une chaîne, parcours et sélection (slice)
- Ressource
- Longueur d'une chaîne
Exemple : len(“Le jour le plus long”) # renvoie 20
- Accès aux caractères d'une chaîne
L'indice du premier caractère est 0.
Exemple
- *.py
texte = "Le manuel de Python 3" texte[0] # Résultat : L texte[13] # Résultat : P
- Parcours des éléments d'une chaîne
Exemple
- *.py
texte = "Le manuel de Python 3" # Parcours avec une boucle while i=0 while i<len(texte): print(texte[i]) i+=1 # Parcours avec une boucle for for i in texte: print(i)
- Sélection de chaîne (slice)
La sélection consiste à extraire une partie de la chaîne (slicing). Pour sélectionner une partie d'une chaîne, on précise la valeur du premier et du dernier indice entre crochet et éventuellement un pas.
Exemple
- *.py
texte = "Le manuel de Python 3" texte[:9] # Résultat : 'Le manuel' (borne début omise) texte[3:12] # Résultat : 'manuel de' texte[13:len(texte)] # Résultat : 'Python' # ou texte[13:] # Résultat : 'Python' (borne fin omise) texte[:] # Résultat : 'Le manuel de Python 3' (shadow copy) # Utilisation du pas texte[:9:2] # Résultat : 'L aul' texte[9::2] # Résultat : ' ePto ' # Indices négatifs texte[3:-2] # Résultat : 'manuel de Python' texte[-21:-14] # Résultat : 'Le manu' texte[::-1] # Résultat : '3 nohtyP ed leunam eL' (inverse le texte)
5. Encodage, décodage
- Ressource : Guide Unicode
”Le type de chaîne de caractères de Python utilise le standard Unicode pour représenter les caractères, ce qui permet aux programmes Python de travailler avec tous ces différents caractères possibles. UTF-8 est l’un des encodages les plus couramment utilisés et Python l’utilise souvent par défaut. ”
- Caractère → Unicode
La fonction ord(car) envoie le nombre entier représentant le code Unicode du caractère représenté par la chaîne cardonnée.
Exemple
- *.py
ord('a') # donne 97 hex(ord('a')) # donne 0x61
- Code Unicode → caractère
La fonction chr(i) renvoie la chaîne représentant un caractère dont le code de caractère Unicode est le nombre entier i.
Exemple
- *.py
chr(ox26) # donne '&'
6. Quelques méthodes de la classe str
Mise en forme | |
---|---|
format(arguments) | Place la liste des arguments, dans l'ordre, aux emplacements réservés par {0} dans la chaîne.
|
Découpage - assemblage | |
split() | Transforme une chaîne en une liste de sous-chaînes. Le séparateur par défaut est un espace, mais il est possible de lui donner en argument n’importe quel autre séparateur.
|
join(liste) | Effectue l’opération inverse de split. Commence par des guillements dans lesquels on place le caractère de séparation.
|
Remplacement | |
replace(old,new) | Remplace le ou les caractères old par le ou les caractères new.
|
Nettoyage | |
strip() | Supprime les espaces, tabulations et retours à la ligne éventuels en début et en fin de chaîne.
|
lstrip() | Enlève les espaces éventuels seulement en début de chaîne. |
rstrip() | Enlève les espaces éventuels en fin de chaîne. |
Recherche d'une sous-chaîne | |
find(x) | Fait exactement la même chose que index() sauf que si elle ne trouve pas la sous-chaîne, elle renvoie -1.
|
index(y) | Renvoie l’indice de la première occurrence de la chaîne passée en argument. Lève une exception en cas d'absence. |
count() | Renvoie le nombre d'occurrences d'une sous-chaîne.
|
startswith() | Renvoie True si la chaîne commence par la sous-chaîne passée en argument. Sinon, elle renvoie False.
|
endswith() | Renvoie True si la chaîne se termine par la sous-chaîne passée en argument. Sinon, elle renvoie False.
|
Changement de casse | |
upper() | Convertit la chaîne de caractères en majuscules.
|
lower() | Convertit la chaîne de caractères en minuscules.
|
capitalize() | Convertit la première lettre d'un mot en majuscule.
|
Ajout de caractères | |
zfill(n) | Complète la chaîne par des zéros (à gauche) jusqu'à ce qu'elle contienne le nombre n de caractères passés en paramètres.
|
Résumé
- Les chaînes sont des objets.
- Un objet est une instance de classe.
- Une classe possède des méthodes, accessibles à partir de l'objet grâce à objet.methode(arguments).
- On peut accéder à un caractère dans la chaîne grâce à chaine[indice] ou à une partie de la chaîne grâce à chaine[premier_indice:dernier_indice]
Quiz
Pour aller plus loin
- Les expressions régulières dans la documentation Python - Outil pythex