Les chaînes de caractères en Python

Une chaîne de caractères en Python ou string en anglais, est une série ordonnée de caractères. Elle peut être une combinaison d’une ou plusieurs lettres, chiffres et caractères spéciaux.

C’est un type de données immuable, ce qui signifie qu’une fois la chaîne de caractères créée, vous ne pouvez plus la modifier (réassigner, mais pas modifier).

chaînes de caractères en Python

Pour créer une chaîne de caractères, vous devez la placer entre apostrophes ou guillemets et l’affecter à une variable.

>>> apostrophe = 'Bonjour!'
>>> guillemets = "les champions"

Mais aussi, les triples apostrophes ou guillemets.

>>> triples_apostrophes = ''' Python '''
>>> triples_apostrophes
' Python '

Les triples apostrophes ou guillemets vous permettent d’écrire une chaîne de caractères sur plusieurs lignes.

triples_guillemets = """ Python
forge """
>>> triples_guillemets
' Python\nforge '
>>> print(triples_guillemets)
 Python
forge 

Remarquez que lorsque nous avons affiché la variable triples_guillemets sans utiliser la fonction print(), on a eu un \n et un affichage sur une seule ligne. \n est le caractère de saut de ligne, pour qu’il soit exécuté, vous devez utiliser la fonctionprint().
N’oubliez pas que IDLE vous permet d’afficher une variable en tapant son nom.

>>> saut_de_ligne = '\n'
>>> saut_de_ligne
'\n'

Donc, afin d’exécuter le saut de ligne, on utilise la fonction print().

>>> print(saut_de_ligne)


>>> 

Le traitement des caractères par un ordinateur

Les ordinateurs utilisent un langage machine pour traiter et stocker les données. Donc, votre machine convertit les caractères en nombres binaires afin de les manipuler. Un ordinateur ne peut pas stocker des lettres, des nombres, des images ou autre chose.
Même si vous pouvez voir des caractères sur votre écran, ils sont stockés et traités en interne sous la forme d’une combinaison de 0 et de 1.

Le stockage des nombres est facile, ils sont convertis en binaire.

Mais comment les caractères sont-ils stockés dans la mémoire ?

La première étape consiste à convertir les caractères en un nombre. Cette conversion est appelée encodage et le processus inverse est appelé décodage.
ASCII et Unicode sont les encodages les plus utilisés.

Les caractères sont stockés dans l’ordinateur, selon la valeur ASCII correspondante.

Par exemple, la valeur ASCII de la lettre (A) majuscule est 65.

Pour stocker la valeur des caractères, l’ordinateur allouera 1 octet (8 bits) de mémoire.

En fait, 65 sera converti en forme binaire qui est 1000001.

Ensuite, 1000001 sera stocké dans un espace mémoire de 8 bits.

Qu’est-ce qu’un encodage et un décodage ?

L’encodage des caractères est une convention qui repose sur l’association d’un caractère à un nombre (A est associé à 65).

Au début d’Internet, ASCII (American Standard Code for Information Interchange) qui est composé de seulement 128 caractères, a été utilisé pour représenter les caractères de la langue anglaise. Cependant, cet encodage ne pouvait pas supporter les autres langues utilisant des accents ou comportant d’autres caractères.

Cependant, il fallait trouver une solution à ce problème. C’est dans ce contexte qu’intervient Unicode pour résoudre ce problème en introduisant toutes les langues avec plus d’un million de caractères.
UTF-8 est l’un des types Unicode les plus utilisés.

Une chaîne de caractères en Python est une séquence de caractères Unicode. Unicode a pu apporter une uniformité dans l’encodage.

L’encodage des données, augmente les chances pour qu’elles soient traitées correctement par les différents systèmes.

Les fonctions ord (), chr () et str()

Voici à quoi ressemble une fonction :
dans votre IDLE tapez ce code :

>>> def bonjour():
	print('bonjour les amis!')

Appuyez sur la touche entrée deux fois pour que l’interpréteur comprenne que vous avez terminé avec votre fonction. Maintenant appelez votre fonction bonjour().

>>> bonjour()
bonjour les amis!

Nous aurons l’occasion d’étudier les fonctions en détail, mais je voulais juste vous donner une idée afin que vous compreniez ce que font réellement les fonctions natives de Python. Nous avons déjà vu print(), id() et type().

La fonction Python ord () ou ordinal prend en argument (à l’intérieur des parenthèses) un seul caractère et renvoie sa valeur Unicode en nombre entier.

Par contre, la fonction chr () prend en argument un nombre entier et renvoie le caractère Unicode qui lui correspond.

>>> ord('A')
65
>>> ord('é')
233
>>> ord('ç')
231
>>> chr(65)
'A'
>>> chr(233)
'é'
>>> chr(231)
'ç'

La fonction str()

Les autres objets Python peuvent être transformés en une chaîne de caractères.

>>> str(100)
'100'
>>> type(100)
<class 'int'>
>>> type('100')
<class 'str'>

100 est de type int ou integer (nombre entier).
Cependant, '100' est de type str ou string (chaîne de caractères).

Concaténation des chaînes de caractères en Python

Vous pouvez concaténer les chaînes de caractères en Python à l’aide de l’opérateur +. Aussi, l’opérateur * peut être utilisé pour répéter la chaîne de caractères un certain nombre de fois.

# Créer deux variables de type chaînes de caractères ou str (string)
>>> str1 = 'Bonjour!'
>>> str2 = 'les champions'

Nous allons concaténer les deux chaînes de caractères en utilisant la virgule.

>>> print(str1, str2)
Bonjour! les champions

Remarquez l’espace après la virgule.

Nous allons concaténer les deux chaînes de caractères en utilisant l’opérateur +.

>>> print(str1 + ' ' + str2)
Bonjour! les champions

Remarquez l’espace entre str1 et str2.

Astuce : Mettez le curseur devant une instruction dans l’IDLE, puis appuyez sur la touche Entrée, pour un copier/coller.

La répétition d’une chaîne de caractères avec l’opérateur *.

>>> (str1 + ' ' + str2 + "     ") * 10
'Bonjour! les champions     Bonjour! les champions     Bonjour! les champions     
  Bonjour! les champions     Bonjour! les champions     Bonjour! les champions     
   Bonjour! les champions     Bonjour! les champions     Bonjour! les champions     
    Bonjour! les champions     '

L’espace est considéré comme un caractère.

L’appartenance et la comparaison des chaînes de caractères en Python


Nous pouvons tester si une séquence existe ou non dans une chaîne de caractères en utilisant l’opérateur Python in.

# Vérifier si les lettres b et B se trouvent dans la chaîne de caractères 'Bonjour !'
>>> 'b' in str1
False
>>> 'b' not in str1
True
>>> 'B' in str1
True

# Vérifier si les lettres b et B ont la même identité
>>> id('b')
140706333025264
>>> id('B')
140706332784560

Les lettres b et B n’ont pas le même emplacement mémoire.

Utiliser les opérateurs == et != pour vérifier l’égalité.

# Vérifier si str1 égal str2
>>> str1 == str2
False
# Vérifier si str1 est différent de str2
>>> str1 != str2
True

Comparer deux chaînes.

>>> str1 > str2
False
>>> str1 < str2
True

Accéder aux caractères d’une chaîne

Nous pouvons accéder aux caractères d’une chaîne en utilisant l’indexation avec des nombres entiers. Mais, sachez qu’on commence à partir de 0 et qu’on peux utiliser des indices négatifs.

L’indice de -1 représente le dernier élément et -2 l’avant-dernier élément.

De plus, vous pouvez parcourir une séquence de caractère en utilisant les deux crochets [ ] et les deux points : comme dans ces exemples :

>>> str3 = 'pythonforge'
# Le premier caractère
>>> str[0]
'p'
# Le dernier caractère
>>> str3 [-1]
'e'
# Commencer à l'index 2 et s’arrêter avant l'index 5
>>> str3 [2 : 5]
'tho'
# Commencer à l'index 6 et s’arrêter à l'index -2
>>> str3 [6 : -2]
'for'

Sachez que lorsque vous écrivez [0:5], l’indice 5 n’est pas inclus.

Si vous ne spécifiez pas l’indice, par défaut, c’est le premier et le dernier qui seront pris en compte.

>>> str3 [ : 2]
'py'
>>> str3 [0 : 6]
'python'
>>> str3 [ : ]
'pythonforge'

Il est également possible de récupérer une séquence en précisant le nombre de caractères à ignorer.

# De l'indice 1 à l'indice 9 en sautant 2 indices 
>>> str3[1:9:2]
'yhno
# Du premier jusqu'au dernier caractère en sautant 2 indices
>>> str3[::2]
'ptofre'

Pour ne pas se perdre avec les indices, mettez le curseur avant le premier indice, puis commencer à parcourir votre chaîne en utilisant la flèche du clavier.

Pour inverser une chaîne de caractères en Python, vous pouvez utiliser l’indice négatif.

>>> chaine_à_inverser = "python"
# commencer du dernier au premier
>>> chaine_inversé = chaine_à_inverser[::-1]
>>> chaine_inversé
'nohtyp'

Astuce : Dans votre IDLE, sélectionnez un mot ou des caractères puis appuyez sur la touche Entrée.

Une chaîne de caractères en Python est immuables

Les chaînes de caractères en Python ne peuvent pas être modifiées.

# Remplacer le B par un b 
>>> str1[0] = 'b' 

Python vous indique qu’il y a une erreur.

Traceback (most recent call last):
File "", line 1, in
   str1[0] = 'b'
TypeError: 'str' object does not support item assignment

TypeError : Une erreur de typage
Les éléments d’une chaîne de caractères ne sont pas modifiables.

Prenons un autre exemple dans lequel nous allons concaténer la chaîne str1 :

>>> str1 = 'Bonjour!'
>>> id ( str1 )
140032522570352
>>> str1 = str1 + ' bienvenue'
>>> str1
'Bonjour! bienvenue'
>>> id ( str1 )
140032522596064

Comme vous pouvez le constater, str1 pointe vers un emplacement mémoire totalement différent, ce qui prouve que la concaténation ne modifie pas l’objet chaîne d’origine. Cependant, elle crée un nouvel objet.
De même, pour les nombres, ils sont également immuables.

Astuce : Vous pouvez créer une nouvelle chaîne de caractères à partir d’une autre.

>>> nouvelle_chaine = str1[0:3] + "," + " est ce que vous êtes " + str2[0:4] + ' ' + 'installés ?'
>>> nouvelle_chaine
'Bon, est ce que vous êtes bien installés ?'

Le caractère d’échappement

Supposons que nous avons une chaîne de caractères dans laquelle on a une apostrophe comme caractère. Comment dire à Python qu’il ne s’agit pas d’un délimiteur de chaîne de caractères.

>>> 'Si chacun faisait ce qu'il dit, on ne manquerait point d'honnêtes gens.'
SyntaxError: invalid syntax

L’interpréteur Python nous informe qu’il s’agit d’une erreur de syntaxe.

La première solution consiste à utiliser les guillemets.

>>> "Si chacun faisait ce qu'il dit, on ne manquerait point d'honnêtes gens."
"Si chacun faisait ce qu'il dit, on ne manquerait point d'honnêtes gens."

Pour échapper un caractère et le faire apparaître, on utilise l’antislash.
Appuyez sur AltGr+8 pour en écrire un . On met un \ avant les apostrophes.

>>> 'Si chacun faisait ce qu\'il dit, on ne manquerait point d\'honnêtes gens.'
"Si chacun faisait ce qu'il dit, on ne manquerait point d'honnêtes gens."

Placez l’antislash avant le caractère que vous voulez échapper.

Pour écrire une chaîne de caractères sur deux lignes, on utilise \n. Utilisez la fonction print()pour exécuter le saut de ligne.

>>> saut_de_ligne = "-première lignen\n-deuxième ligne"
>>> print(saut_de_ligne)
-première ligne
-deuxième ligne

Le caractère \t pour une tabulation.

>>> print("a\tb\tc\td\te")
a	b	c	d	e

Ler pour afficher les caractères spéciaux .

Nous pouvons placer r ou R(raw string) devant une chaîne pour ignorer les caractères spéciaux et afficher tous ce qu’il y a à l’intérieur d’une chaîne.

# Le caractère de saut de ligne va être exécuté
>>> print("Pour un saut de ligne, on utilise \n")
Pour un saut de ligne, on utilise 

# Le caractère de saut de ligne na va pas être exécuté
>>> print(r"Pour un saut de ligne, on utilise \n")
Pour un saut de ligne on utilise \n

De plus, vous pouvez utiliser un antislash pour afficher les caractères spéciaux.

>>> print("Pour un saut de ligne, on utilise \\n")
Pour un saut de ligne, on utilise \n
>>> print("Pour une tabulation, on utilise \\t")
Pour une tabulation, on utilise \t

La longueur d’une chaîne

La fonction len() renvoie la longueur (nombre de caractères) de la chaîne.

>>> str = 'pythonforge'
>>> len(str)
11
>>> len('pythonforge')
11

Si on veux accéder à un caractère avec un indice supérieur à len(str), nous aurons une erreur.

>>> str[11]
Traceback (most recent call last):
  File "", line 1, in 
    str[11]
IndexError: string index out of range

Si vous comptez les caractères de 'pythonforge' en commençant de 0, le dernier caractère aura un indice de 10.

Les méthodes de chaîne de caractères en Python

Une méthode en python est similaire à une fonction, sauf qu’elle est associée à une classe. Vous pouvez imaginer une classe comme une boite qui contient plusieurs fonctions et comme ces fonctions ne sont accessible qu’à travers cette classe, elles sont appelées méthodes.

Pour appeler une méthode de la classe str on utilise la syntaxe chaîne.notre_méthode(). Donc, notre_méthode appartient à la classe str.

La méthode format()

L’ancien formatage en Python était le suivant :

>>> note = 20
>>> print("il a eu un %s en histoire"  %note)
il a eu un 20 en histoire

%s a été remplacé par la variable note.

str.format () est l’une des méthodes de formatage de chaîne en Python 3.

>>> note = 20
>>> print("il a eu un {} en histoire" . format(note))
il a eu un 20 en histoire

Les accolades on été remplacés par la valeur qui se trouve à l’intérieur de format().

Le troisième formatage et qui a été introduit avec la version 3.6 de Python est le f-strings.

>>> note = 20
>>> print(f"il a eu un {note} en histoire")
il a eu un 20 en histoire

Un autre exemple pour insérer plusieurs variables.

>>> Note1 = 20
>>> Note2 = 18
>>> Note3 = 19
>>> print(f"il a eu un {Note1} en histoire, {Note2} en physique et {Note3} en math.")
il a eu un 20 en histoire, 18 en physique et 19 en math.

Les méthodes de conversion de caractères

Les méthodes de conversion effectuent un changement spécifique sur les caractères de la chaîne. Une nouvelle chaîne de caractères sera renvoyée.

str.capitalize() : le premier caractère en majuscules et tous les autres en minuscules.

>>> 'boNjouR'.capitalize()
'Bonjour'

str.lower() : tous les caractères seront convertis en minuscules.

>>> 'boNjouR'.lower()
'bonjour'

str.title() : la première lettre de chaque mot est convertie en majuscule.

>>> 'boNjouR les amis'.title()
'Bonjour Les Amis'

str.upper() : tous les caractères sont convertis en majuscules.

>>> 'bonjour'.upper()
'BONJOUR'

Rechercher et remplacer

Il existe des méthodes qui vous permettent d’effectuer une recherche dans une chaîne.

str.find() : recherche une chaîne de caractères et renvoi son indice.

>>> 'Bonjour'.find('j')
3

str.count() : compte le nombre d’occurrences d’une chaîne de caractères.

>>> 'Bonjour'.count('o')
2

str.endswith() : renvoie True si la chaîne se termine avec le caractère spécifié ou False dans le cas contraire.

>>> 'Bonjour'.endswith('r')
True

str.startswith() : retourne True si la chaîne commence avec le caractère spécifié ou False dans le cas contraire.

>>> 'Bonjour'.startswith('B')
True

str.replace() : remplace une chaîne de caractères par une autre.

>>> 'abcd'.replace('a','@')
'@bcd'

Déterminer la nature des caractères

str.isalnum() : vérifie si la chaîne comporte des caractères alphanumériques.

str.isalpha() : vérifie si la chaîne comporte uniquement des caractères alphabétiques.

str.isdigit() : vérifie si la chaîne comporte uniquement des caractères numériques.

str.islower() : vérifie si les caractères alphabétiques de la chaîne sont en minuscules.

Les méthodes de formatage

str.center() : centrer une chaîne selon un formatage déterminé.

>>> 'Bonjour'.center(20)
'      Bonjour       '

str.lstrip() : supprimer les caractères d’espacement qui se trouvent à l’extrémité gauche.

>>> '      Bonjour       '.lstrip()
'Bonjour       '

str.rstrip() : supprimer les caractères d’espacement qui se trouvent à l’extrémité droite.

str.strip() : supprimer les caractères d’espacement des deux extrémités.

str.split() : découpe une chaîne de caractères en plusieurs éléments.

>>> 'tout en python est objet'.split()
['tout', 'en', 'python', 'est', 'objet']

str.join() : renvoie une chaîne dans laquelle les éléments de la séquence sont joints par un séparateur, par exemple un espacement ' '.

>>> ' '.join(['tout', 'en', 'python', 'est', 'objet'])
'tout en python est objet'

La fonction input() pour récupérer un texte d’un utilisateur

La fonction input() récupère les données fournies par les utilisateurs, les manipule, puis renvoie le résultat. La valeur par défaut de cette fonction est de type str ou string (chaîne de caractères).

>>> nom = input("Entrez votre nom : ")
Entrez votre nom : Arnaud
>>> nom
'Arnaud'
>>> type(nom)
<class 'str'>

Maintenant nous allons récupérer l’âge de à l’utilisateur.

>>> age = input('Entrez votre âge ' + nom + ': ') 
Entrez votre âge Arnaud: 40 
# Vérifier la valeur de la variable age 
>>> age 
'40' 
# Vérifier le type de age 
>>> type(age)
<class 'str'>

La fonction int() pour convertir une chaîne de caractères

Comme vous avez constaté dans l’exemple précédent, age est de type str. Python vous permet de convertir une valeur de type str (string ou chaîne de caractères) en une valeur de type int (integer ou un nombre entier).

>>> age = int(input('Entrez votre âge ' + nom + ': ')) 
Entrez votre âge Arnaud: 40
>>> age 
40 
>>> type(age)
<class 'int'>

Maintenant age est de type entier.

Il est également possible de convertir une valeur de type str en une valeur de type float.

>>> note = input('Combien avez-vous eu en physique ? ') 
Combien avez-vous eu en physique ? 17.5 
>>> type(note)
<class 'str'>
>>> float(note) 17.5
>>> type(17.5)
<class 'float'>

La fonction print() et la suppression de saut de ligne

À chaque fois que la fonction print() affiche une sortie, elle exécute un saut de ligne automatique.

Dans votre IDLE, allez dans File -> New File, puis tapez le code suivant dans l’éditeur de texte qui s’affiche :

print("La ligne une ")
print("La ligne deux ")
print("La ligne trois ")

Dans le menu de l’éditeur accédez à : Run -> Run Module, enregistrez votre fichier. Le résultat s’affichera dans l’IDLE .

La ligne une 
La ligne deux 
La ligne trois 

Si vous ne souhaitez pas avoir un saut de ligne automatique, vous pouvez utiliser l’argument spécial end = " " avec la fonction print().

print("La ligne une ", end=' ')
print("La ligne deux ", end=' ')
print("La ligne trois ")

Le résultat :

La ligne une  La ligne deux  La ligne trois

Définir un séparateur pour la fonction print()

Par défaut, print() affiche plusieurs objets séparés par des espaces. Mais il est tout à fait possible de changer ce comportement en utilisant le paramètre sep=" " pour remplacer le caractère d’espace.

>>> print("a", "b", "c")
a b c
>>> print("a", "b", "c", sep="***")
a***b***c

Les chaînes de caractères en Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Retour en haut