On crée une chaîne de caractères en utilisant " ou ' indifféremment.
>>> texte = "bonjour" >>> autre_texte = 'au revoir' >>> type(texte) < class:str >
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
for … in … correspond au caractère itérable d'une séquence,texte[2] correspond au caractère indexable
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.
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.
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.
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.
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)
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 :
{},.format(a) indique par quoi il faudra compléter les trous,:0.4f qui 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.
À 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 { }.