Maîtriser les chaînes Python : Création, accès et manipulation
Les chaînes sont parmi les types les plus populaires en Python. Nous pouvons les créer simplement en enfermant des caractères entre guillemets. Python traite les guillemets simples de la même manière que les guillemets doubles. Créer des chaînes est aussi simple qu'affecter une valeur à une variable. Par exemple :
var1 = 'Hello World!' var2 = "Python Programming"
Accès aux valeurs dans les chaînes
Python ne prend pas en charge un type caractère ; ceux-ci sont traités comme des chaînes de longueur un, donc également considérés comme un sous-chaîne.
Pour accéder aux sous-chaînes, utilisez les crochets pour le tranchage avec l'index ou les indices pour obtenir votre sous-chaîne. Par exemple :
Démonstration en direct#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Programming" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant :
var1[0]: H var2[1:5]: ytho
Mise à jour des chaînes
Vous pouvez "mettre à jour" une chaîne existante en (ré)affectant une variable à une autre chaîne. La nouvelle valeur peut être liée à sa valeur précédente ou à une chaîne complètement différente. Par exemple :
Démonstration en direct#!/usr/bin/python var1 = 'Hello World!' print "Chaîne mise à jour : ", var1[:6] + 'Python'
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant :
Chaîne mise à jour : Hello Python
Caractères d'échappement
Le tableau suivant est une liste de caractères d'échappement ou non imprimables qui peuvent être représentés avec la notation antislash.
Un caractère d'échappement est interprété ; dans une chaîne à guillemets simples aussi bien que doubles.
| Notation antislash | Caractère hexadécimal | Description |
|---|---|---|
| \a | 0x07 | Beep ou alerte |
| \b | 0x08 | Retour arrière (Backspace) |
| \cx | Control-x | |
| \C-x | Control-x | |
| \e | 0x1b | Échappement (Escape) |
| \f | 0x0c | Saut de page (Formfeed) |
| \M-\C-x | Meta-Control-x | |
| \n | 0x0a | Nouvelle ligne (Newline) |
| \nnn | Notation octale, où n est dans l'intervalle 0-7 | |
| \r | 0x0d | Retour chariot (Carriage return) |
| \s | 0x20 | Espace |
| \t | 0x09 | Tabulation (Tab) |
| \v | 0x0b | Tabulation verticale |
| \x | Caractère x | |
| \xnn | Notation hexadécimale, où n est dans l'intervalle 0-9, a-f, ou A-F |
Opérateurs spéciaux sur les chaînes
Supposons que la variable de chaîne a contient 'Hello' et la variable b contient 'Python', alors :
| Opérateur | Description | Exemple |
|---|---|---|
| + | Concaténation - Ajoute les valeurs de chaque côté de l'opérateur. | a + b donnera HelloPython |
| * | Répétition - Crée de nouvelles chaînes, concaténant plusieurs copies de la même chaîne. | a*2 donnera HelloHello |
| [] | Tranche - Donne le caractère à l'index donné. | a[1] donnera e |
| [ : ] | Tranche d'intervalle - Donne les caractères de l'intervalle donné. | a[1:4] donnera ell |
| in | Appartenance - Retourne vrai si un caractère existe dans la chaîne donnée. | H in a donnera 1 |
| not in | Appartenance - Retourne vrai si un caractère n'existe pas dans la chaîne donnée. | M not in a donnera 1 |
| r/R | Chaîne brute (Raw String) - Supprime la signification réelle des caractères d'échappement. La syntaxe pour les chaînes brutes est exactement la même que pour les chaînes normales, à l'exception de l'opérateur de chaîne brute, la lettre "r," qui précède les guillemets. Le "r" peut être minuscule (r) ou majuscule (R) et doit être placé immédiatement avant le premier guillemet. | print r'\n' affiche \n et print R'\n' affiche \n |
| % | Formatage - Effectue le formatage de chaîne. | Voir section suivante |
Opérateur de formatage de chaîne
L'une des fonctionnalités les plus cool de Python est l'opérateur de formatage de chaîne %. Cet opérateur est unique aux chaînes et compense l'absence de fonctions de la famille printf() de C. Voici un exemple simple :
Démonstration en direct#!/usr/bin/python
print "Je m'appelle %s et je pèse %d kg !" % ('Zara', 21)
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant :
Je m'appelle Zara et je pèse 21 kg !
Voici la liste complète des symboles qui peuvent être utilisés avec % :
| Symbole de format | Conversion |
|---|---|
| %c | caractère |
| %s | conversion de chaîne via str() avant formatage |
| %i | entier décimal signé |
| %d | entier décimal signé |
| %u | entier décimal non signé |
| %o | entier octal |
| %x | entier hexadécimal (lettres minuscules) |
| %X | entier hexadécimal (lettres MAJUSCULES) |
| %e | notation exponentielle (avec 'e' minuscule) |
| %E | notation exponentielle (avec 'E' MAJUSCULE) |
| %f | nombre réel à virgule flottante |
| %g | le plus court de %f et %e |
| %G | le plus court de %f et %E |
D'autres symboles et fonctionnalités supportés sont listés dans le tableau suivant :
| Symbole | Fonctionnalité |
|---|---|
| * | l'argument spécifie la largeur ou la précision |
| - | justification à gauche |
| + | afficher le signe |
| <sp> | laisser un espace avant un nombre positif |
| # | ajouter le zéro initial octal ('0') ou '0x'/'0X' hexadécimal, selon que 'x' ou 'X' ont été utilisés. |
| 0 | remplir à gauche avec des zéros (au lieu d'espaces) |
| % | '%%' laisse un seul '%' littéral |
| (var) | variable de mappage (arguments dictionnaire) |
| m.n. | m est la largeur totale minimale et n est le nombre de chiffres à afficher après la virgule (si applicable) |
Guillemets triples
Les guillemets triples de Python viennent à la rescousse en permettant aux chaînes de s'étendre sur plusieurs lignes, y compris les NOUVELLES LIGNES, TABULATIONS et tout autre caractère spéciaux verbatim.
La syntaxe pour les guillemets triples consiste en trois guillemets simples ou doubles consécutifs.
Démonstration en direct#!/usr/bin/python para_str = """this is a long string that is made up of several lines and non-printable characters such as TAB ( \t ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up. """ print para_str
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant. Notez comment chaque caractère spécial a été converti sous sa forme imprimée, jusqu'au dernier NOUVELLE LIGNE à la fin de la chaîne entre "up." et les guillemets triples de fermeture. Notez aussi que les NOUVELLES LIGNES se produisent soit avec un retour chariot explicite à la fin d'une ligne, soit avec son code d'échappement (\n) :
this is a long string that is made up of several lines and non-printable characters such as TAB ( ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ ], or just a NEWLINE within the variable assignment will also show up.
Les chaînes brutes ne traitent pas l'antislash comme un caractère spécial. Chaque caractère que vous mettez dans une chaîne brute reste tel que vous l'avez écrit :
Démonstration en direct#!/usr/bin/python print 'C:\\nowhere'
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant :
C:\nowhere
Maintenant, utilisons une chaîne brute. Nous mettrions l'expression dans r'expression' comme suit :
Démonstration en direct#!/usr/bin/python print r'C:\\nowhere'
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant :
C:\\nowhere
Chaîne Unicode
Les chaînes normales en Python sont stockées en interne en ASCII 8 bits, tandis que les chaînes Unicode sont stockées en Unicode 16 bits. Cela permet un ensemble de caractères plus varié, y compris les caractères spéciaux de la plupart des langues du monde. Je limiterai mon traitement des chaînes Unicode à ce qui suit :
Démonstration en direct#!/usr/bin/python print u'Hello, world!'
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant :
Hello, world!
Comme vous pouvez le voir, les chaînes Unicode utilisent le préfixe u, tout comme les chaînes brutes utilisent le préfixe r.
Méthodes intégrées de chaîne
Python inclut les méthodes intégrées suivantes pour manipuler les chaînes :
| N° | Méthodes avec description |
|---|---|
| 1 | capitalize() Met en majuscule la première lettre de la chaîne. |
| 2 | center(width, fillchar) Retourne une chaîne remplie d'espaces avec la chaîne originale centrée sur un total de colonnes width. |
| 3 | count(str, beg=0, end=len(string)) Compte combien de fois str se trouve dans la chaîne ou dans un sous-chaîne si l'index de début beg et l'index de fin end sont donnés. |
| 4 | decode(encoding='UTF-8', errors='strict') Décode la chaîne en utilisant le codec enregistré pour l'encodage. L'encodage par défaut est l'encodage de chaîne par défaut. |
| 5 | encode(encoding='UTF-8', errors='strict') Retourne la version encodée de la chaîne ; en cas d'erreur, le défaut est de lever une ValueError sauf si errors est donné avec 'ignore' ou 'replace'. |
| 6 | endswith(suffix, beg=0, end=len(string)) Détermine si la chaîne ou un sous-chaîne (si l'index de début beg et l'index de fin end sont donnés) se termine par suffix ; retourne vrai si oui, faux sinon. |
| 7 | expandtabs(tabsize=8) Étend les tabulations dans la chaîne en espaces multiples ; par défaut 8 espaces par tabulation si tabsize n'est pas fourni. |
| 8 | find(str, beg=0, end=len(string)) Détermine si str se trouve dans la chaîne ou dans un sous-chaîne si l'index de début beg et l'index de fin end sont donnés ; retourne l'index si trouvé, -1 sinon. |
| 9 | index(str, beg=0, end=len(string)) Identique à find(), mais lève une exception si str n'est pas trouvé. |
| 10 | isalnum() Retourne vrai si la chaîne a au moins 1 caractère et tous les caractères sont alphanumériques, faux sinon. |
| 11 | isalpha() Retourne vrai si la chaîne a au moins 1 caractère et tous les caractères sont alphabétiques, faux sinon. |
| 12 | isdigit() Retourne vrai si la chaîne ne contient que des chiffres, faux sinon. |
| 13 | islower() Retourne vrai si la chaîne a au moins 1 caractère avec casse et tous les caractères avec casse sont en minuscules, faux sinon. |
| 14 | isnumeric() Retourne vrai si une chaîne unicode ne contient que des caractères numériques, faux sinon. |
| 15 | isspace() Retourne vrai si la chaîne ne contient que des caractères d'espacement, faux sinon. |
| 16 | istitle() Retourne vrai si la chaîne est correctement "titled" (majuscule au début de chaque mot), faux sinon. |
| 17 | isupper() Retourne vrai si la chaîne a au moins un caractère avec casse et tous les caractères avec casse sont en majuscules, faux sinon. |
| 18 | join(seq) Fusionne (concatène) les représentations en chaîne des éléments de la séquence seq en une chaîne, avec la chaîne séparateur. |
| 19 | len(string) Retourne la longueur de la chaîne. |
| 20 | ljust(width[, fillchar]) Retourne une chaîne remplie d'espaces avec la chaîne originale justifiée à gauche sur un total de colonnes width. |
| 21 | lower() Convertit toutes les lettres majuscules de la chaîne en minuscules. |
| 22 | lstrip() Supprime tous les espaces blancs de début de chaîne. |
| 23 | maketrans() Retourne une table de traduction à utiliser dans la fonction translate. |
| 24 | max(str) Retourne le caractère alphabétique maximum de la chaîne str. |
| 25 | min(str) Retourne le caractère alphabétique minimum de la chaîne str. |
| 26 | replace(old, new [, max]) Remplace toutes les occurrences de old dans la chaîne par new ou au maximum max occurrences si max est donné. |
| 27 | rfind(str, beg=0, end=len(string)) Identique à find(), mais recherche en arrière dans la chaîne. |
| 28 | rindex(str, beg=0, end=len(string)) Identique à index(), mais recherche en arrière dans la chaîne. |
| 29 | rjust(width[, fillchar]) Retourne une chaîne remplie d'espaces avec la chaîne originale justifiée à droite sur un total de colonnes width. |
| 30 | rstrip() Supprime tous les espaces blancs de fin de chaîne. |
| 31 | split(str="", num=string.count(str)) Divise la chaîne selon le délimiteur str (espace si non fourni) et retourne une liste de sous-chaînes ; divise en au plus num sous-chaînes si donné. |
| 32 | splitlines(num=string.count('\n')) Divise la chaîne à tous les (ou num) NOUVELLES LIGNES et retourne une liste de chaque ligne avec les NOUVELLES LIGNES supprimées. |
| 33 | startswith(str, beg=0, end=len(string)) Détermine si la chaîne ou un sous-chaîne (si l'index de début beg et l'index de fin end sont donnés) commence par la sous-chaîne str ; retourne vrai si oui, faux sinon. |
| 34 | strip([chars]) Effectue à la fois lstrip() et rstrip() sur la chaîne. |
| 35 | swapcase() Inverse la casse pour toutes les lettres de la chaîne. |
| 36 | title() Retourne la version "titled" de la chaîne, c'est-à-dire que tous les mots commencent par une majuscule et le reste en minuscules. |
| 37 | translate(table, deletechars="") Traduit la chaîne selon la table de traduction str(256 caractères), en supprimant ceux dans la chaîne del. |
| 38 | upper() Convertit les lettres minuscules de la chaîne en majuscules. |
| 39 | zfill(width) Retourne la chaîne originale remplie à gauche avec des zéros pour un total de width caractères ; prévu pour les nombres, zfill() conserve tout signe donné (moins un zéro). |
| 40 | isdecimal() Retourne vrai si une chaîne unicode ne contient que des caractères décimaux, faux sinon. |
Python
- Maîtriser les chaînes C# : Fondamentaux, opérations et techniques avancées
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser les opérations sur chaînes Python : Replace, Join, Split, Reverse et Conversion de casse
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Maîtriser les chaînes format() en Python avec exemples clairs
- Python len() : Guide pratique pour mesurer la longueur des objets
- Maîtriser la méthode String.find() de Python : Syntaxe, Exemples et Alternatives
- Maîtriser enumerate() en Python : boucler avec indices pour listes, tuples, chaînes et dictionnaires