Tutoriel Python : manipuler les chaines de caractère

Table des matières

  1. Introduction
  2. Définir une chaîne de caractères
  3. Définition
  4. Le type String

III. Manipuler les chaînes de caractères

  1. Accéder à un seul caractère dans une chaîne
  2. La longueur d’une chaîne de caractères
  3. Accéder à des sous-chaînes
  4. Concaténer deux chaînes
  5. Parcourir une chaîne de caractères
  6. Appartenance d’un élément à une chaîne
  7. Les chaînes sont non modifiables
  8. Comparer deux chaînes de caractères
  9. Encoder une chaîne de caractères
  10. Méthodes des objets string
  11. a)Index(caractère)
  12. b)find(chaîne)
  13. c)rfind(chaîne)
  14. d)count(chaîne)
  15. e)lower ()
  16. f)Upper ()
  17. g)Capitalize ()
  18. h)Swapcase ()
  19. i)Strip ()
  20. j)Replace (ancien, nouveau)
  21. Exercice d’application
  22. Enoncé
  23. Corrigé
  24. Conclusion

I. Introduction

Une chaîne de caractères ("string" en anglais) est une liste de caractères. On parle de chainage parce que les caractères se suivent, et chacun a une position, tout comme un maillon dans une chaîne. Par conséquent, il est possible de faire apparaître plusieurs fois le même caractère dans la chaîne de caractères afin de manipuler des phrases, par exemple.

II. Définir une chaîne de caractères

1. Définition

Différemment des données numériques qui sont une seule entité, les chaînes de caractères (ou string) constituent une sorte de données composites. La soi-disant « entité bien définie » elle-même consiste en un ensemble d'entités plus petites, dans ce cas des caractères. Selon la situation, nous devons parfois traiter ces données composites comme un seul objet, parfois même comme une séquence ordonnée d'éléments. Dans ce dernier cas, nous souhaitons peut-être pouvoir accéder à chaque élément individuellement.

En fait, les chaînes font partie de la catégorie d'objets Python appelée séquences, qui comprend également des listes et des tuples.

2. Le type String

En Python, les données de type string sont toute séquence de caractères séparés par des guillemets simples, guillemets doubles ou des guillemets triples.

Exemple :

  • Code :

string1 = "aujourd'hui"
string2 = '"Oui", répondit-il,'
string3 = 'il fait beau'
print(string2, string3, string1)

  • Résultat d’exécution :

string1, string2 et string 3 sont des variables de type chaîne de caractères.

III. Manipuler les chaînes de caractères

1. Accéder à un seul caractère dans une chaîne

Les chaînes sont un cas particulier d'un type de données plus courant (appelé données composées). Les données composites sont une entité qui rassemble une entité plus simple dans une structure : par exemple, dans le cas d'une chaîne, ces entités plus simples sont évidemment les caractères eux-mêmes. Selon la situation, nous voulons traiter la chaîne comme un objet unique parfois, et parfois comme une collection de caractères différents. Par conséquent, les langages de programmation tels que Python doivent pouvoir accéder séparément à chaque caractère de la chaîne.

Python considère les chaînes comme des objets de la catégorie des séquences, et les séquences sont des collections ordonnées d'éléments. Cela signifie simplement que les caractères de la chaîne sont toujours dans un certain ordre. Par conséquent, vous pouvez utiliser l'index pour spécifier chaque caractère de la chaîne en fonction de sa position dans la séquence.

Pour accéder à un certain caractère, nous utilisons le nom de la variable qui contient la chaîne et ajoutons l'index numérique correspondant à la position du caractère dans la chaîne entre les deux crochets.

Remarque : Puisque vous aurez l'occasion de le vérifier ailleurs, les données informatiques sont presque toujours numérotées à partir de zéro (plutôt que de 1). C'est le cas des caractères dans une chaîne.

Exemple :

Code :

chaîne = "Kaoutar"
print("Le premier caractère de la chaîne est :", chaîne[0])
print("Le quatrième caractère de la chaîne est :", chaîne[3])

Résultat d’exécution :

2. La longueur d’une chaîne de caractères

Utilisez la fonction intégrée len () pour déterminer la longueur de la chaîne (c'est-à-dire le nombre de caractères.

Exemple :

Code :

print(len('Informatique'))

Résultat d’exécution :

3. Accéder à des sous-chaînes

L'opérateur d'index ([]) vous permet également de sélectionner une sous-chaîne en fonction de son index. Cette technique s'appelle le tranchage. Dans la plage de [n, m], le nième caractère est inclus, mais le mième caractère n'est pas inclus. Si vous souhaitez vous souvenir facilement du mécanisme, vous devez supposer que l'index pointe vers la position entre les caractères, comme illustré dans la figure suivante :

D'après la figure, il n'est pas difficile de comprendre que ch [3: 7] extraira iett.

De plus, il devient optionnel si le terminal de départ est le premier caractère (index 0), ou le terminal d'arrivé est le dernier caractère (index égal à la longueur de la chaîne).

Exemple :

Code :

chaîne = "234567891"
print(chaîne[1:3])
print(chaîne[0:-1])
print(chaîne[:-1])
print(chaîne[1:len(chaîne)])
print(chaîne[1:])

Résultat d’exécution :

Pour vérifier le début et la fin d'une chaîne sans déterminer la durée, vous pouvez utiliser "startwith ()" et "endswith ()", mais c'est plus lent car cela nécessite des fonctions de plus haut niveau.

Exemple :

Code :

chaîne = "234567891"
if chaîne.startswith('2345'):
print('ok')
if chaîne.endswith('91'):
print('ok')

Résultat d’exécution :

4. Concaténer deux chaînes

L'opération d'assemblage de plusieurs petites chaînes pour construire une chaîne plus grande est appelée concaténation, et elle est effectuée en utilisant l'opérateur "+" en Python.

Exemple :

Code :

chaîne1 = 'Demain ça sera'
chaîne2 = ' la fête des femmes'
chaîne= chaîne1 + chaîne2
print(chaîne)

Résultat d’exécution :

On peut convertir une chaîne représentant un nombre en nombre réel comme illustré dans les exemples suivants :

Exemple 1 :

Code :

chaîne = '1234'
print(chaîne + 45)

Résultat d’exécution :

L’addition d’une chaîne de caractère et un nombre est impossible.

Exemple 2 :

Code :

chaîne = '1234'
print(int(chaîne) + 45)

Résultat d’exécution :

Dans cet exemple, la fonction intégrée int () convertit une chaîne en entier.

Dans ce cas, l’addition de deux nombres est possible.

Exemple 3 :

Code :

chaîne = '1234'
print(chaîne + str(45))

Résultat d’exécution :

Dans cet exemple, la fonction intégrée str() convertit un entier en une chaîne de caractères.

Dans ce cas aussi, on peut concaténer deux chaînes.

5. Parcourir une chaîne de caractères

Ce qui arrive souvent, c'est que nous devons traiter la chaîne entière caractère par caractère du début à la fin pour effectuer n'importe quelle opération sur chaque chaîne. Nous appelons cette opération un parcours. En restreignant l'utilisation des outils Python que nous connaissons déjà, nous pouvons envisager d'encoder de telle opération en fonction d'instruction while.

Exemple :

Code :

chaîne = 'Informatique'
indice = 0
while indice print(chaîne[indice], '*', end='')
indice = indice + 1

Résultat d’exécution :

Par conséquent, cette boucle "traverse" la chaîne pour extraire tous les caractères un par un, puis les insère dans la position astérisque. Veuillez noter que la condition utilisée par l'instruction while est indice , ce qui signifie que la boucle doit être exécutée jusqu'à ce que la boucle atteigne le numéro d'index 11 (la chaîne compte pour 12 caractères). Nous traiterons efficacement tous les caractères de la chaîne car leur index est compris entre zéro et 11. La séquence de navigation est une opération très courante en programmation.

Afin de faciliter l'écriture, Python fournit une structure de boucle plus appropriée basée sur la paire d'instructions for ... in ...:

Grâce à ces instructions, le programme ci-dessus devient :

Code :

chaîne = 'Informatique'
for caractère in chaîne:
print(caractère, '*', end='')

Résultat d’exécution :

Comme vous pouvez le voir, cette structure de boucle est plus compacte. Cela vous évite d'avoir à définir et incrémenter des variables spécifiques ("compteurs") pour gérer l'index des caractères à traiter à chaque itération. La variable de caractère contiendra tous les caractères de la chaîne en continu, du premier au dernier.

Donc, vous pouvez écrire une boucle à l'aide de l'instruction for, dans laquelle l'itération traitera en continu tous les éléments d'une séquence donnée. Dans l'exemple ci-dessus, la séquence est une chaîne mais il faut noter qu’on peut appliquer la même méthode pour les listes.

6. Appartenance d’un élément à une chaîne

L'instruction in peut être utilisée indépendamment de for pour vérifier si un élément donné fait partie d'une séquence. Par exemple, vous pouvez utiliser in pour vérifier si un certain caractère alphabétique appartient à un groupe bien défini :

Exemple :

Code :

caractère = "a"
les_voyelles = "aeiouyAEIOUY"
if caractère in les_voyelles:
print(caractère, "est une voyelle")

Résultat d’exécution :

7. Les chaînes sont non modifiables

Vous ne pouvez pas modifier le contenu d'une chaîne existante. En d'autres termes, vous ne pouvez pas utiliser l'opérateur [] sur le côté gauche d'une instruction d'affectation. Par exemple, essayez d'exécuter le petit script suivant (le script essaie de remplacer une lettre dans une chaîne) :

Exemple :

Code :

chaîne = 'hello world'
chaîne[0] = 'H'
print (chaîne)

Résultat d’exécution :

Le script n'affiche pas "Bonjour à tous", mais "renvoie" une erreur, par exemple : TypeError: object doesn't support item assignment. Cette erreur est provoquée dans la deuxième ligne du script. Nous avons essayé de remplacer une lettre dans la chaîne par une autre lettre, mais ce n'est pas autorisé.

Cependant, le script suivant fonctionne :

Exemple :

Code :

chaîne = 'hello world'
chaîne = 'H' + chaîne[1:]
print (chaîne)

Résultat d’exécution :

En fait, dans cet autre exemple, nous n'avons pas modifié la chaîne "hello wold". On recrée une autre avec le même nom sur la deuxième ligne du script (il s'agit bien d'une nouvelle chaîne).

8. Comparer deux chaînes de caractères

Tous les opérateurs de comparaison s'appliquent aux chaînes. Ceci est très utile pour trier les mots par ordre alphabétique :

Exemple :

Code :

chaîne = input("Entrez une chaîne quelconque : ")
if chaîne position = "précède"
elif chaîne > "moteur":
position = "suit"
else: position = "se confond avec"
print("Le mot", chaîne, position, "le mot 'moteur' dans l'ordre alphabétique")

Résultat d’exécution :

Ces comparaisons sont possibles car les caractères alphabétiques qui composent une chaîne sont stockés dans la mémoire de l'ordinateur sous la forme de nombres binaires et leur valeur est liée à la position du caractère dans la lettre. Par exemple, dans le système de codage ASCII, A = 65, B = 66, C = 67, etc.

9. Encoder une chaîne de caractères

Pour encoder une chaîne en Unicode, elle doit être précédée de la lettre « u » :

Exemple :

Code :

chaîne = u"Hello world"
print(chaîne)

Résultat d’exécution :

Dans Python 3, les chaînes sont Unicode par défaut. Par conséquent, le préfixe u est facultatif. Or, si le programme doit pouvoir s'exécuter à la fois en Python 2 et Python 3, il existe toujours utile.

Pour les chaînes, il est important de comprendre qu'il existe deux concepts de chaînes différents en Python :

  1. Pour des raisons historiques, dans les versions Python inférieures à Python 2, les chaînes sont traitées comme des chaînes d'octets. Cela permet d'utiliser un seul type pour gérer deux concepts différents, mais cela peut parfois entraîner une confusion sur le type traité.
  2. Le type de chaîne comprend des séquences d'octets et des chaînes ASCII / UTF-8(par exemple : "Hello World").

À partir de la version 3 de Python, il existe des différences évidentes entre les chaînes d'octets et les types de chaînes :

  • Le type de chaîne (type str)contient des caractères Unicode (par exemple : "xyzzy", "frobozz")
  • Les tableaux d'octets et d'octets (classes d'octets et tableaux d'octets) ne contiennent que des octets (l'un est immuable et l'autre est modifiable). Par exemple : b'xyzzy '.

10. Méthodes des objets string

En Python, les chaînes sont des objets. Par conséquent, de nombreux traitements peuvent être effectués en utilisant des méthodes appropriées. En voici quelques-uns, choisissez parmi les plus utiles. Cependant, vous pouvez utiliser les fonctions intégrées dir () ou help (str) pour obtenir une liste complète de toutes les méthodes associées à l'objet :

Code :

print(dir(''))

Résultat d’exécution :

Remarque : Les fonctions "str ()" et "repr ()" (pour la représentation d'objets) vous permettent de convertir n'importe quel objet Python en une chaîne. Ces deux fonctions sont différentes : "str ('string')" renverra "string", et "repr ('string')" renverra "'string'".

a) Index(caractère)

Cette méthode recherche l'index de la première occurrence du caractère dans la chaîne. S'il n'existe pas, une erreur est déclenchée (ValueError : sous-chaîne non trouvée).

Exemple :

Code :

chaîne = "Hello world"
print(chaîne.index("l"))

Résultat d’exécution :

b) find(chaîne)

Cette méthode permet de rechercher la position d’une sous-chaîne dans la chaîne depuis le début.

Exemple :

Code :

string = "il fait beau aujourd'hui n'est-ce pas ?"
chaîne = "beau"
print(string.find(chaîne))

Résultat d’exécution :

c) rfind(chaîne)

Cette méthode fonctionne identiquement à "find" mais en commençant par la fin (sens inverse).

Exemple :

Code :

string = "Bonjour, aujourd'hui il fait beau n'est-ce pas ?"
chaîne = "beau"
print(string.rfind(chaîne))

Résultat d’exécution :

d) count(chaîne)

Cette méthode permet de compter le nombre de sous-chaîne dans la chaîne.

Exemple :

Code :

string = "ce matin il fait beau n'est-ce pas ?"
chaîne = "ce"
print(string.count(chaîne))

Résultat d’exécution :

e) lower ()

Cette méthode permet de convertir la chaîne en minuscules.

Exemple :

Code :

string = "CE MATIN il fait beau n'est-ce pas ?"
print(string.lower())

Résultat d’exécution :

f) Upper ()

Cette méthode permet de convertir la chaîne en majuscules.

Exemple :

Code :

string = "CE MATIN il fait beau n'est-ce pas ?"
print(string.upper())

Résultat d’exécution :

g) Capitalize ()

Cette méthode permet de convertir la première lettre de la chaîne en majuscule.

Exemple :

Code :

string = "ce matin il fait beau n'est-ce pas ?"
print(string.capitalize())

Résultat d’exécution :

h) Swapcase ()

Cette méthode permet de convertir les lettres minuscules de la chaîne en majuscules et inversement.

Exemple :

Code :

string = "ce mAtin IL Fait beau N'est-ce Pas ?"
print(string.swapcase())

Résultat d’exécution :

i) Strip ()

Cette méthode permet de supprimer les espaces figurés au début et à la fin de la chaîne.

Exemple :

Code :

string = " ce mAtin IL Fait beau N'est-ce Pas ? "
print(string.strip())

Résultat d’exécution :

j) Replace (ancien, nouveau)

Cette méthode remplace tous les caractères anciens avec les caractères nouveaux.

Exemple :

Code :

string = "Hello World ?"
print(string.replace("?","."))

Résultat d’exécution :

IV. Exercice d’application

1. Enoncé

Écrire un programme qui affiche le nombre de voyelles existantes dans une phrase.

2. Corrigé

Code :

string="Python est un lAnguage de prOgrammation"
n=len(string)
nombreVoyelle=0
for i in range(0,n):
if( string[i] in ['a','e','i','o','u','y','A','E','I','O','U','Y']):
nombreVoyelle = nombreVoyelle + 1
print("La chaîne 'string' possède", nombreVoyelle, "voyelles")

Résultat d’exécution :

V. Conclusion

Dans ce tutoriel, vous avez :

  • Approfondi la compréhension du type de chaîne (str)
  • Découvert comment interroger des caractères ou extraire des sous-chaînes.
  • Découvert comment parcourir des chaînes de caractères.
  • Maitrisé plusieurs opérations sur les chaînes à savoir : la concaténation, l’appartenance, comparaison, encodage etc.
  • Découvert certaines fonctions et méthodes utiles pour les chaînes de caractères.
  • Illustré les fonctionnalités des chaînes à travers de nombreux exemples.
  • Mis en pratique vos connaissances à l’aide d’un exercice d’application.
Article publié le 04 Octobre 2020par Kaoutar OUAZZINE