Avec les nombres et les listes, les chaines de caractères sont les éléments informatiques qu'on utilise le plus couramment. Ce sont tout simplement des objets qui représentent du texte. Elles sont entre guillemets (ou apostrophes).
>>>a="Ceci est une chaine de caractères"
>>>b="1+1"
>>>c=1+1
Ainsi, a
et b
sont des chaines de caractères alors que c
est un entier qui vaut 2.
Il y a énormément d'action possible sur les chaines de caractères, nous allons voir les principales.
str(objet)
: Transforme (quand c'est possible) l'objet en texte pour pouvoir l'afficher par exemple.>>>c=1+1
>>>str(c)
"2"
c
il y a le résultat du calcul. str(c)
transforme ce résultat en chaine de caractère contenant ce résultat.len(texte)
: Donne la longueur d'un texte.>>>len("abc def")
7
texte[n]
: Affiche le n-ième terme du texte. Attention : la première lettre commence à l'indice 0 !>>>"Alea jacta est"[0]
'A'
>>>"Alea jacta est"[5]
'j'
>>>"Alea jacta est"[-1]
't'
texte[debut : fin]
: Affiche les caractères de texte compris entre l'indice debut et l'indice fin-1.>>>"Alea jacta est"[5:10]
'jacta'
>>>"Alea jacta est"[:4]
'Alea'
>>>"Alea jacta est"[5:]
'jacta est'
texte1+texte2
: Concatène les deux textes c'est à dire les met bout à bout.>>>texte1="Vive"
>>>texte2="Les Mathématiques"
>>>texte1+texte2
'ViveLes Mathématiques'
texte*k
: Crée une chaine de caractère dans laquelle on répète le texte k fois d'affilée.>>>texte = "Monsieur, j'ai pas compris ! "
>>>texte*5
"Monsieur, j'ai pas compris ! Monsieur, j'ai pas compris ! Monsieur, j'ai pas compris ! Monsieur, j'ai pas compris ! Monsieur, j'ai pas compris ! "
sous_texte
in texte
: Renvoie True si la chaine de caractère sous_texte
est dans texte
et False sinon.if lettre in "aeiouy":
print(lettre + " est une voyelle")
else :
print(lettre + " n'est pas une voyelle")
lettre
est une voyelle ou pas.for caractere in texte
: Nous permet de créer une boucle en énumérant les lettres de texte
.>>> texte="Quatre bonbons à 0,25 euro chacun coûtent un euro"
>>> for car in texte:
>>> if car in "0123456789":
>>> print(car)
0
2
5
for
va prendre le premier caractère du texte et le placer dans la variable car
c'est à dire que car = 'Q'
. Ensuite on teste si car
fait partie des chiffres. Comme ce n'est pas le cas, et qu'il n'y a rien à faire dans ce cas, on revient à la boucle for
avec la deuxième lettre cette fois et on recommence jusqu'au caractère "0" qui faire partie des chiffres donc on l'affiche etc.texte1 == texte2
: Renvoie True si les deux textes sont parfaitement identiques.texte1 != texte2
: Renvoie True si les deux textes ont au moins un caractère de différent.texte1 < texte2
: Renvoie True si le texte1 est strictement avant texte2 dans l'ordre lexicographique (l'ordre du dictionnaire).texte1 <= texte2
: Comme < mais les deux textes peuvent être les mêmes.texte1 > texte2
: Renvoie True si le texte1 est strictement après texte2 dans l'ordre lexicographique (l'ordre du dictionnaire).texte1 >= texte2
: Comme < mais les deux textes peuvent être les mêmes..find(sous_chaine)
: Donne l'indice où se trouve pour la première fois sous_chaine.>>> texte="J'ai posé ma brosse sur le bureau"
>>> texte.find("brosse")
13
>>> texte.find("o")
6
find
ne renvoie que l'indice du premier "o" qu'il rencontre..count(sous_chaine)
: Donne le nombre de fois où sous_chaine se trouve dans la chaine à qui l'on applique la fonction.>>> texte="J'ai posé ma brosse sur le bureau"
>>> texte.count("os")
2
>>> texte.count("e")
3
.replace(sous_chaine1, sous_chaine2)
: Remplace toutes les sous_chaine1 par les sous_chaine2.>>> texte= "Une foncttttion ttttrès prattttique si vous répéttttez ttttrop les tttt"
>>> texte.replace("tttt","t")
'Une fonction très pratique si vous répétez trop les t'
.lower(), .upper()
: La première permet de mettre tout le texte en minuscule et la deuxième en majuscule.ord(caractere)
: Donne le code ASCII du caractère.>>> ord("a")
97
>>> ord("#")
35
chr(numero)
: Donne le caractère correspondant au code ASCII>>> chr(65)
'A'
>>> chr(35)
'#'
>>>car="e"
>>>numero=ord(car)
>>>nouveau_car=chr(numero+1)
>>>print(nouveau_car)
f
car
. On récupère son code ASCII et on le met dans la variable numero
. On récupère le caractère suivant c'est à dire correspondant au code ASCII numero+1
. Et on affiche le caractère obtenu.print(chr(ord(car)+1))
mais c'est moins clair... Et petite question pour finir cette partie : Qu'obtiendrait-on si on prenait car = "z"
?format
des chaines de caractères. Il existe ce que l'on appelle les expressions régulières qui permettent de vérifier ou rechercher un certain formatage dans un texte (comme par exemple vérifier si le format d'un numéro de téléphone ou d'une adresse mail ou d'un numéro de carte bleue est valide) mais nous n'allons pas en parler ici.format
s'applique comme un texte à trous que l'on complète avec des données que l'on peut formater>>> a=0.5
>>> b=2
>>> c=1/3
>>> "Dans b il y a la valeur {1}, dans a il y a la valeur {0} et dans c la valeur {2}".format(a,b,c)
'Dans b il y a la valeur 2, dans a il y a la valeur 0.5 et dans c la valeur 0.3333333333333333'
format
va remplacer les accolades par les variables en respectant l'ordre : {0}
sera remplacée par la valeur de la première variable donnée (ici a
), {1}
par b
et {2}
par c
. Déjà on peut voir un intérêt pratique à la fonction car sinon pour obtenir le même résultat à la main, il aurait fallu écrire :"Dans b il y a la valeur "+str(b)+" , dans a il y a la valeur "+str(a)+ " et dans c la valeur "+str(c)
format
permet en plus de formater ce que l'ont veut afficher. Par exemple si je veux afficher un nombre arrondi à deux chiffres significatifs après la virgule il suffit de rajouter :.2g
dans les accolades concernées. Voici ce que cela donne :>>> "Dans b il y a la valeur {1:.2g}, dans a il y a la valeur {0:.2g} et dans c la valeur {2:.2g}".format(a,b,c)
'Dans b il y a la valeur 2, dans a il y a la valeur 0.5 et dans c la valeur 0.33'
:.2f
.>>> "Dans b il y a la valeur {1:.2f}, dans a il y a la valeur {0:.2f} et dans c la valeur {2:.2f}".format(a,b,c)
'Dans b il y a la valeur 2.00, dans a il y a la valeur 0.50 et dans c la valeur 0.33'