Les chaîne de caractères en Python

Chaines Caracteres Python

Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c’est-à-dire un ensemble de symboles faisant partie d’un jeu de caractères, défini par le code ASCII.

En Python une chaîne de caractères est un objet de la classe str.

La classe str

Un objet str est immuable; càd que son contenu ne peut être modifié une fois que la chaîne est créée. En effet, soit la chaîne de caractères ch dont la valeur est “Bonjour”; l’instruction ” ch[0] = ‘v’ ” va provoquer une erreur d’exécution.

Notez que ch[0] représente la premier caractère dans la variable ch.

Les chaînes de caractères sont fondamentales en informatique et le traitement des chaînes de caractères est une tâche commune dans la programmation. Les chaînes de caractères sont des objets de la classe str.

Jusqu’à présent, vous avez utilisé des chaînes en entrée et en sortie. La fonction d’entrée input() renvoie une chaîne de caractères à partir d’une saisie au clavier et la fonction d’impression print() peut afficher une chaîne de caractères sur le moniteur.

Création de chaînes des caractères

Vous pouvez créer des chaînes de caractères en utilisant le mot clé str comme suit:

s1 = str() # Créer un objet chaîne de caractères vide
s2 = str("Welcome") # Créer l’ objet chaîne de caractères "Welcome"

Python fournit une syntaxe simple pour créer un objet chaîne de caractères en utilisant une valeur de chaîne. Par exemple :

s1 = "" # identique à s1 = str()
s2 = "Welcome" # identique à s2 = str("Welcome")

Un objet chaîne de caractères est immuable: une fois qu’il est créé, son contenu ne peut pas être changé. Pour optimiser les performances, Python utilise le même objet pour les chaînes de caractères qui ont la même valeur.

Comme le montre la figure suivante, s1 et s2 font référence à la fois au même objet chaîne de caractères et ont le même numéro d’identification.

Reference Chaine Caracteres Python

Ce comportement est valable pour tous les objets immuables dans Python. Par exemple, int est une classe immuable. Deux objets int avec la même valeur partagent réellement le même objet, comme le montre la figure suivante.

Reference Entier Python

Fonctions des chaînes de caractères

Plusieurs fonctions intégrées en Python peut être utilisées avec les chaînes de caractères.

Vous pouvez utiliser la fonction len() pour renvoyer le nombre de caractères dans une chaîne, max() pour renvoyer le caractère dont le plus grand code ASCII et la fonction min() pour retourner le caractère dont le plus petit code ASCII dans une chaîne.

Voici quelques exemples:

>>> s = "Welcome"
>>>len(s)
7
>>> max(s)
'o'
>>> min(s)
'W'
>>>

Puisque s a 7 caractères, len(s) renvoie 7 (ligne 3). Notez que les lettres minuscules ont une valeur ASCII supérieure à celle des lettres majuscules, donc max(s) retourne ‘o’ (ligne 5) et min (s) retourne ‘W’ (ligne 7).

Voici un autre exemple:

s = input("Entrer une chaîne de caractères: ")

if len(s) % 2 == 0:
   print(s, " contient un nombre pair de caractères")
else:
   print(s, " contient un nombre impair de caractères")

Si vous entrez « ordinateur » lors de l’exécution du code, le programme affichera :

ordinateur contient un nombre pair de caractères

L’opérateur indice [ ]

Une chaîne de caractères est une séquence de caractères. Un caractère de la chaîne est accessible par l’opérateur indice [ ] en utilisant la syntaxe:

s[index]

L’indice d’un caractères dans une chaîne de caractères varie entre 0 et len()-1.

Indice Operateur Python

Voici un exemple :

>>> s = "Welcome"
>>>for i in range(0, len(s), 2):
... print(s[i], end = '')
Wloe
>>>

Dans la boucle for, i vaut 0, 2, 4 et 6. Donc le programme affichera les valeurs s[0], s[2], s[4], et s[6].

Python permet également l’utilisation de nombres négatifs comme indices pour référencer les positions par rapport à l’extrémité de la chaîne.

La position réelle est obtenue en ajoutant la longueur de la chaîne à l’indice négatif. Par exemple :

>>> s = "Welcome"
>>>s[-1]
'e'
>>>s[-2]
'm'
>>>

Dans la ligne 2, s [-1] est même que s [-1 + len (s)], qui est le dernier caractère de la chaîne. Dans la ligne 4, s[-2] est même que s[-2 +len(s)], qui est l’avant-dernier caractère de la chaîne s.
Notez que puisque les chaînes de caractères sont immuables, vous ne pouvez pas modifier leur contenu. Par exemple, le code suivant est interdit:

s[2] = 'A'

Découpage en tranche ([début :fin])

L’opérateur de découpage en tranche([début :fin]) retourne une tranche de la chaîne en utilisant la syntaxe s[début : fin].

La tranche est une sous-chaîne qui commence à l’indice début et se termine à l’indice fin-1. Par exemple,

>>> s = "Welcome"
>>>s[1 : 4]
'elc'

s [1: 4] renvoie une sous-chaîne qui commence à l’indice 1 et se termine à l’indice 3.
L’indice de départ ou de fin peuvent être omis. Dans ce cas, leurs valeurs par défaut sont 0 et len()-1, respectivement. Par exemple,

>>> s = "Welcome"
>>>s[ : 6]
'Welcom'
>>>s[4 : ]
'ome'
>>>s[1 : -1]
'elcom'
>>>

Dans la ligne 2, s[6] est même que s [0: 6], qui retourne une sous-chaîne de l’indice 0 à l’indice 5. Dans la ligne 4, s [4:] est même que s [4: 7] , qui renvoie une sous-chaîne de l’indice 4 à l’indice 6.

Vous pouvez également utiliser un indice négatif pour extraire une sous-chaîne. Par exemple, dans la ligne 6, s [1: -1] estla même chose que S [1: 1 + len (s)].

Si l’un des indices i et j de l’expression s[i: j] est négatif, remplacer le par len(s)+sa valeur. Si j>len(s), j sera remplacé par len(s). Si i> = j, Python retourne une tranche vide.

Les opérateurs de concaténation (+) et de répétition (*)

Vous pouvez joindre, ou concaténer deux chaînes en utilisant l’opérateur de concaténation (de +). Vous pouvez également utiliser l’opérateur de répétition (*) pour concaténer plusieurs copies de la même chaîne. Voici quelques exemples:

>>> s1 = "Welcome"
>>> s2 = "Python"
>>> s3 = s1 + " to " + s2
>>> s3
'Welcome to Python'
>>> s4 = 3 * s1
>>> s4
'WelcomeWelcomeWelcome'
>>> s5 = s1 * 3
>>> s5
'WelcomeWelcomeWelcome'
>>>

Notez que 3 * s1 et s1 * 3 ont le même effet (lignes 6-11).

Les opérateurs in et not in

Vous pouvez utiliser opérateurs in et not in pour tester si une chaîne de caractères est incluse dans une autre chaîne de caractères. Voici quelques exemples:

>>> s1 = "Welcome"
>>> "come" in s1
True
>>> "come" not in s1
False
>>>

Voici un autre exemple :

s = input("Entrer une chaîne de caractères: ")

if "Python" in s:
   print("Python est dans ", s)
else:
   print("Python n'est pas dans ", s)

Si vous exécutez le programme en saisissant « Bienvenue en Python », le programme devrait afficher :

Python est dans Bienvenue en Python

Comparaison de chaînes de caractères

Vous pouvez comparer des chaînes de caractères en utilisant les opérateurs de comparaison (==, ! =, >, > =, < et <=).

Python compare les codes ASCII des deux premiers éléments, s’ils diffèrent cela détermine le résultat de la comparaison, sinon les deux éléments suivants sont comparés, et ainsi de suite, jusqu’à ce que l’une des deux chaines soit épuisée.

Supposons que vous avez besoin de comparer la chaîne de caractères s1= (“Jane”) avec s2 = (“Jake”). Les deux premiers caractères (J et J) de s1 et s2 sont comparés. Puisqu’ils sont égaux, Python va comparer maintenant les deux seconds caractères (a et a).

Puisqu’ils sont égaux, les troisièmes caractères (n et k) de s1 et s2 seront comparés. Etant donné que ‘n’ a une valeur ASCII supérieur à ‘k’, alors s1 est supérieur à s2. Voici quelques exemples:

>> "green" == "glow"
False
>>> "green" != "glow"
True
>>> "green" > "glow"
True
>>> "green" >= "glow"
True
>>> "green" < "glow"
False
>>> "green" <= "glow" 
False 
>>> "ab" <= "abc" 
True 
>>>

Voici un autre exemple :

s1 = input("Entrer la 1ère chaîne de caractères: ")
s2 = input("Entrer la 2ème chaîne de caractères: ")
if s2 < s1:
   s1, s2 = s2, s1

print("Les deux chaînes sont dans cet ordre:", s1, s2)

Si vous exécutez le programme en entrant ‘Peter’ pour s1 et ‘John’ pour s2. Puisque s2<s1 est vraie (ligne 3), les deux chaînes seront permutées dans la ligne 4. Par conséquent, le programme affichera le message suivant dans la ligne 5.

Les deux chaînes sont dans cet ordre: John Peter

Itération d’une chaîne de caractères

Une chaîne de caractères est itérable. Cela signifie que vous pouvez utiliser une boucle for pour parcourir tous les caractères de la chaîne. Par exemple, le code suivant affiche tous les caractères de la chaîne de caractères s:

for ch in s:
   print(ch)

Vous pouvez lire le code ci-dessus comme : “pour chaque caractère ch dans s, afficher ch.”
La boucle for n’a pas utilisé des indices pour accéder aux caractères.

Cependant, vous devez toujours utiliser les indices si vous souhaitez parcourir les caractères de la chaîne de caractères s dans un ordre différent. Par exemple, le code suivant affiche les caractères des positions impaires dans la chaîne s:

s="Python"
for i in range(0, len(s), 2):
   print(s[i])

Le code utilise la variable i comme indice pour accéder aux éléments de la chaîne de caractères s.

La valeur de i est initialement 0, puis elle est incrémentée par 2 successivement, avant qu’elle atteigne ou dépasse len(s). Pour chaque valeur i, le programme affiche la valeur de s[i].

Tester une chaîne de caractères

La classe str fournit de nombreuses méthodes utiles. Les méthodes suivantes permettent d’effectuer des tests sur les caractères d’une chaîne.

  • isalnum(): booléenne Renvoie True si les caractères dans cette chaîne sont alphanumériques et il y a au moins un caractère.
  • isalpha(): booléenne Renvoie True si les caractères dans cette chaîne sont alphabétiques et il y a au moins un caractère.
  • isdigit(): booléenne Renvoie True si cette chaîne ne contient que des caractères numériques.
  • isidentifier(): booléenne Renvoie True si cette chaîne est un identifiant de Python.
  • islower(): booléenne Renvoie True si tous les caractères dans cette chaîne est des lettres minuscules et il y a au moins un caractère.
  • isupper(): booléenne Renvoie True si tous les caractères dans cette chaîne sont des lettres majuscules et il y a au moins un caractère.
  • isspace(): booléenne Renvoie True si cette chaîne ne contient que des caractères blancs.

Voici quelques exemples d’utilisation des méthodes ci-dessus:

>>> s = "welcome to python"
>>>s.isalnum()
False
>>> "Welcome".isalpha()
True
>>> "2012".isdigit()
True
>>> "first Number".isidentifier()
False
>>>s.islower()
True
>>>s.isupper()
False
>>>s.isspace()
False
>>>

s.isalnum() renvoie False (ligne 2), parce que la chaîne de caractères s contient des espaces, qui ne sont ni des lettres ni des chiffres. L’expression « Welcome » contient seulement des lettres (ligne 4), donc “Welcome”.isalpha() retourne True.

Voici un autre exemple:

s = "2011"
if s.isdigit():
   print(s, "est une chaîne numérique")

Le code affiche :

2011 est une chaîne numérique

Recherche de sous-chaînes

Vous pouvez rechercher une chaîne dans une autre chaîne en utilisant les méthodes suivantes:

  • endswith(s1: str): booléenne Renvoie True si la chaîne se termine par la sous-chaîne s1.
  • startswith(s1: str): booléenne Renvoie True si la chaîne commence par la sous-chaîne s1.
  • find(s1): int Retourne l’indice le plus bas où s1 commence dans cette chaîne, ou -1 si s1 ne se trouve pas dans cette chaîne.
  • rfind(s1): int Renvoie l’indice le plus élevé où s1 commence dans cette chaîne, ou -1 si s1 ne se trouve pas dans cette chaîne.
  • count(s): int Renvoie le nombre d’occurrences de s1.

Voici quelques exemples d’utilisation des méthodes ci-dessus:

>>> s = "welcome to python"
>>>s.endswith("thon")
True
>>>s.startswith("good")
False
>>>s.find("come")
3
>>>s.find("become")
-1
>>>s.rfind("o")
17
>>>s.count("o")
3
>>>

Voici un autre exemple:

s = input("Entrer une chaîne: ")

if s.startswith("comp"):
   print(s, "commence par comp")

if s.endswith("er"):
   print(s, "se termine par er")

print('e', "apparaît ", s.count('e'), " fois dans", s)

Si vous saisissez« computer » lors de l’exécution, le code affichera:

computer commence par comp
computer se termine par er
e apparaît 1 fois dans computer

Conversion des chaînes de caractères

Vous pouvez faire une copie d’une chaîne en utilisant les méthodes indiquées dans la liste ci-dessous.

  • capitalize(): Renvoie une copie de cette chaîne avec seulement le premier caractère en majuscule.
  • lower(): Renvoie une copie de cette chaîne avec toutes les lettres converties en minuscules.
  • upper(): Renvoie une copie de cette chaîne avec toutes les lettres converties en majuscules.
  • title(): Renvoie une copie de cette chaîne avec la première lettre en majuscule dans chaque mot.
  • swapcase(): Renvoie une copie de cette chaîne dans laquelle les lettres minuscules converties en majuscules et les lettres en majuscules converties en minuscules.
  • replace(old, new): Retourne une nouvelle chaîne qui remplace toutes les occurrences de la chaîne old par la chaîne new.

Voici quelques exemples d’utilisation de ces méthodes:

>>> s = "welcome to python"
>>> s1 = s.capitalize()
>>> s1
'Welcome to python'
>>> s2 = s.title()
>>> s2
'Welcome To Python'
>>> s = "New England"
>>> s3 = s.lower()
>>> s3
'newengland'
>>> s4 = s.upper()
>>> s4
'NEW ENGLAND'
>>> s5 = s.swapcase()
>>> s5
'nEWeNGLAND'
>>> s6 = s.replace("England", "Haven")
>>> s6
'New Haven'
>>>s
'New England'
>>>

Comme indiqué précédemment, une chaîne de caractères est immuable. Aucune des méthodes de la classe str change le contenu de la chaîne; par contre, ces méthodes créent de nouvelles chaînes.

Comme le montrent les scripts précédents la chaîne s a gardé sa valeur qui est “New England” (lignes 21-22) après appel des méthodes s.lower (), s.upper (), s.swapcase (), et s.replace (“England”, “Haven” ).

Elimination des espaces blancs

Vous pouvez utiliser les méthodes de la table suivante pour supprimer les caractères d’espacement de l’extrémité gauche, droite, ou les deux d’une chaîne de caractères.

Rappelons que les caractères ” , \t, \f, \v, \r et \n” sont appelés des caractères blancs

  • lstrip(): Retourne une chaîne avec les caractères blancs en début enlevés.
  • rstrip(): Retourne une chaîne avec les caractères blancs à droite supprimés.
  • strip(): Retourne une chaîne sans caractères blancs à gauche et droite.

Voici quelques exemples d’utilisation des méthodes ci-dessus:

>>> s = " Welcome to Python\t"
>>> s1 = s.lstrip()
>>> s1
'Welcome to Python\t'
>>> s2 = s.rstrip()
>>> s2
' Welcome to Python'
>>> s3 = s.strip()
>>> s3
'Welcome to Python'
>>>

Les méthodes d’élimination des espaces blancs suppriment seulement les caractères blancs au début et à la fin d’une chaîne. Cependant, les caractères blancs entourés par des caractères non-blancs ne sont pas enlevés.

Les fonctions ord et chr

Python fournit la fonction ord (ch) pour renvoyer le code ASCII du caractère ch et la fonction chr (code) pour renvoyer le caractère représenté par le code y passé en paramètre. Par exemple,

>>> ch = 'a'
>>> ord(ch)
97
>>> chr(98)
'b'
>>> ord('A')
65

Le code ASCII de la lettre ‘’a’’ est 97, ce qui est supérieur au code ASCII de la lettre ‘’A’’ (65).

Les codes ASCII des lettres minuscules sont des nombres entiers consécutifs commençant à partir du code de ‘a’, puis celui de ‘b’ (ord(‘b’)=ord(‘a’)+1), celui de ‘c’, et ainsi de suite, jusqu’à la lettre z. La même chose est vraie pour les lettres majuscules.

La différence entre le code ASCII d’une lettre minuscule et sa lettre majuscule correspondante est 32. Ceci est une propriété utile pour déterminer le code ASCII d’un caractère majuscule à partir du code ASCII de sa lettre minuscule correspondante, et vice-versa.

Par exemple, vous pouvez trouver la représentation majuscule d’une lettre minuscule, comme indiqué dans le code suivant:

>>> ord('a') – ord('A')
32
>>> ord('d') – ord('D')
32
>>> decalage = ord('a') – ord('A')
>>> lowercaseLetter = 'h'
>>> uppercaseLetter = chr(ord(lowercaseLetter) – decalage)
>>> uppercaseLetter
'H'

La ligne 6 attribue une lettre minuscule à la variable lowercaseLetter. La ligne 7 obtient sa lettre majuscule correspondante.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here