Table des matières
Chaînes des caractères
Le type str
On crée une chaîne de caractères en utilisant " ou ' indifféremment.
>>> texte = "bonjour" >>> autre_texte = 'au revoir' >>> type(texte) < class:str >
Itérable et indexable
Le type d'une chaîne est str. Nous avons déjà rencontré la syntaxe de la manipulation d'une chaîne, elle est identique à celle des p-uplets. Juste un exemple pour mémoire :
>>> texte = "bonjour"
>>> texte[2]
'n'
>>> texte[-1]
'r'
>>> for car in texte:
print(car)
b
o
n
j
o
u
r
- Pouvoir faire
for … in …correspond au caractère itérable d'une séquence, - Pourvoir écrire
texte[2]correspond au caractère indexable
Immuable
En Python les chaînes de caractères sont immuables. On on essaie de modifier le contenu d'un str, on aura donc une erreur :
>>> texte = "bonjour" >>> texte[2] = 'a' TypeError: 'str' object does not support item assignment
Toutes les fonctions qui modifient une chaîne créent une copie de la chaîne d'origine avec la modification faite.
Quelques fonctions spécifiques
Les fonctions pouvant être utilisées sur les chaînes de caractères sont très nombreuses et on ne va pas toutes les apprendre. Dites vous que pour toutes les manipulations ordinaires auxquelles vous pourriez penser, il existe probablement une fonction déjà faite.
>>> texte = " Éléphant "
>>> texte.upper()
' ÉLÉPHANT '
>>> texte.lower()
' éléphant '
>>> texte.lstrip()
'Éléphant '
>>> "ananas".replace('a', 'x')
'xnxnxs'
>>> "452".isnumeric()
True
Vous noterez la syntaxe particulière : on veut agir sur la chaîne texte et au lieu d'écrire quelque chose comme upper(texte), on écrit texte.upper(). Ce serait trop long de l'expliquer ici. Le type str est une classe – au sens donné à ce mot en programmation – et vous l'étudierez si vous poursuivre en Terminale.
La commande help(str) affiche les nombreuses fonctions disponibles. Bien sûr, internet est aussi une source précieuse d'information.
Le formatage
Il est fréquent que l'on ait besoin d'écrire un résultat et que l'on souhaite respecter un certain affichage.
Exemple : On dispose du nombre a et on voudrait afficher un message disant “La valeur de a est ” suivi de la valeur de a.
Il existe diverses méthodes mais la meilleur consiste à utiliser un formatage.
Méthode 1, en utilisant print
On peut écrire print("La valeur de a est",a) ce qui fait ce que l'on demande. Mais cette méthode est très limitée : On ne pourra pas régler finement l'affichage – voire les cas suivants.
Méthode 2, avec une concaténation
Disons le tout de suite, c'est une mauvaise méthode. L'idée est de construire la chaîne de caractères en concaténant le début du message avec la valeur de a convertie en str.
"La valeur de a est " + str(a)
Méthode 3, format
Les chaînes de caractères disposent d'une méthode format permettant de contrôler finement l'affichage.
>>> a = 1/7
>>> "La valeur de a est {}".format(a)
'La valeur de a est 0.14285714285714285'
>>> "La valeur de a est {:0.4f}".format(a)
'La valeur de a est 0.1429'
Voici le principe :
- on prévoit des “trous” dans la chaîne de texte, marqués par
{}, - l'ajout de
.format(a)indique par quoi il faudra compléter les trous, - on peut ajouter des informations de formatage comme
:0.4fqui permet d'indiquer que l'on souhaite un affichage à 4 chiffres après la virgule.
Les options d'affichage sont très nombreuses. Par exemple un affichage direct en hexadécimal :
>>> n = 218
>>> "{} en hexadécimal s'écrit {:03X}".format(n,n)
'0DA'
:03X indique que l'on veut un affichage à 3 chiffres, complété à gauche par des 0 si besoin, en hexadécimal, en majuscules.
Méthode 4, à partir de Python 3.6
À partir de Python 3.6 on dispose des fstrings – formated strings.
Le principe est le même qu'avec format mais avec une notation plus légère et plus lisible.
>>> n = 218
>>> f"{n} en hexadécimal s'écrit {n:03X}"
'0DA'
Vous pouvez noter le f en tête de la chaîne et les variables qui sont placées directement dans les { }.
