Les chaînes de caractères (suites de symboles quelconques) permettent de manipuler des mots,
des phrases, des messages.
Une chaîne de caractères en langage python se note entre quotes doubles ou entre quotes simples.
texte1 = "ceci est une chaîne de caractères"
texte2 = 'et ceci aussi'
texte3 = " c'est ok ici aussi"
texte4 = 'c\'est ok aussi comme ça'
print(texte1)
print(texte2)
print(texte3)
print(texte4)
On obtient :
ceci est une chaîne de caractères
et ceci aussi
c'est ok ici aussi
c'est ok aussi comme ça
Vous remarquerez, avec l'affectation de la variable texte4, la barre d'échappement utilisée lorsqu'on veut une apostrophe dans une chaîne de caractères
qui est elle-même délimitée par des apostrophes (simple-quote).
Vous remarquerez également qu'une espace est un caractère comme un autre.
Le type des chaînes de caractères
En langage python, une chaîne de caractères est un objet de type str (abréviation de string).
ch = "Ceci est un objet de type string"
print(type(ch))
L'affichage obtenu :
‹ class 'str' ›
Concaténation de chaînes de caractères.
Concaténation avec +
Lorsqu'on cherche à coller deux chaînes de caractères entre elles, on parle de concaténation de chaînes.
Le programme ci-dessous vous donne un exemple de l'utilisation de la concaténation.
nom = input("Entrez votre nom : ")
texte_bienvenue = "Bonjour " + nom + "."
print(texte_bienvenue)
Si l'on suppose que l'utilisateur a entré le nom Zorglub, l'affichage obtenu est :
Bonjour Zorglub.
Après l'addition, la multiplication.
Avec les nombres, l'opération 3+3+3+3+3 se note plus brièvement 3*5.
Il en va de même avec les chaînes de caractères en langage python.
ch = 'chabada'
print(ch*5)
L'affichage obtenu est :
chabadachabadachabadachabadachabada
Retour sur le typage
Un même opérateur a des effets différents suivant le type des objets auxquels il s'applique.
print(1+3)
print('1'+'3')
L'affichage obtenu est :
4
13
Dans le premier cas, python ajoute les entiers 1 et 3 et obtient 4.
Dans le second cas, python concatène les chaînes de caractères '1' et '3' et obtient donc '13'.
Changer de type
Dans certains contextes,
il est utile de pouvoir changer le type d'une variable en un autre type (lorsque c'est possible).
On parlera de transtypage : un transtypage est un mécanisme permettant de convertir une valeur d'un type de données vers un autre type de données. En anglais, on utilise "to cast" pour "transtyper", vous trouverez donc parfois dans des textes informatiques français l'usage du mot "caster" ou "faire un cast".
Du type string vers le type int.
Par exemple, lorqu'on utilise un input dans un programme.
Le résultat sera toujours une chaîne de caractères, même si l'on attend un entier.
ch = input("Entrez l'année de votre date de naissance : ")
print(type(ch))
En supposant que l'utilisateur ait entré 1996, l'affichage obtenu est :
<class 'str'>
ch contient donc maintenant une chaîne de caractères.
Cela peut bien sûr être gênant si l'on veut ensuite effectuer un calcul avec l'entier demandé.
On essaie par exemple ici de déterminer l'âge de l'utilisateur :
ch = input("Entrez l'année de votre date de naissance : ")
age = 2016-ch
L'exécution de ce code conduit à une erreur :
TypeError: unsupported operand type(s) for -: 'int' and 'str'
On ne peut pas soustraire un entier et une chaîne de caractères.
Pour régler ce problème, il nous suffit de transformer la chaîne lue en entier avec la fonction int().
ch = input("Entrez l'année de votre date de naissance : ")
ch = int(ch) # transformation de ch en entier
age = 2016-ch
print(age)
Si l'utilisateur entre bien un entier, ce programme se déroulera comme attendu.
Du type int vers le type string.
Il peut arriver à l'inverse que l'on veuille transformer un objet de type entier en un objet de type string.
On utilisera pour cela la fonction str().
age = 18
print("Type de la variable age avant le transtypage : ", type(age) )
age = str(age)
print("Type de la variable age après le transtypage : ", type(age) )
On obtient l'affichage :
Type de la variable age avant le transtypage : <class 'int'>
Type de la variable age après le transtypage : <class 'str'>
Longueur d'une chaîne de caractères.
La longueur d'une chaîne de caractères est le nombre de caractères dans la chaîne.
Rappelons qu'une espace est un caractère comme un autre.
print(len('une chaîne pythonique.'))
On obtient :
22
Parcourir les éléments d'une chaîne de caractères.
Pour parcourir les caractères d'une chaîne, on peut utiliser une boucle for.
texte = "Le langage Python."
for x in texte :
print(x)
L'indentation (automatique avec les bons éditeurs ) pour l'intruction suivant la ligne for ... : est obligatoire.
Cette indentation permettra de délimiter le bloc concerné par la boucle.
L'affichage obtenu est le suivant (à chaque nouvelle instruction print, on va à la ligne) :
L
e
l
a
n
g
a
g
e
P
y
t
h
o
n
.
Sous-chaîne d'une chaîne de caractères.
Accès à un caractère de la chaîne par son indice.
Les éléments d'une chaîne ch de longueur len(ch) sont numérotés de 0 à len(ch)-1.
Exemple : indexation des caractères de la chaîne ch="python."
Les indices dans une chaîne
Indice
0
1
2
3
4
5
6=len(ch)-1
Caractère
p
y
t
h
o
n
.
Caractère
ch[0]
ch[1]
ch[2]
ch[3]
ch[4]
ch[5]
ch[6]=ch[len(ch)-1]
Cela donne une autre possibilité pour parcourir les caractères d'une chaîne :
ch = "Le langage Python."
for j in range(0,len(ch)):
print(ch[j])
Le résultat est le même que le parcours réalisé plus haut dans la page.
for j in range(a,b) : j prendra successivement les valeurs a, a+1, ..., b-2, b-1.
Le dernier indice d'une chaîne peut être aussi repéré par -1, le précédent par -2 ...
ch = "Le langage Python."
print(ch[-1])
print(ch[-2])
print(ch[-3])
print(ch[-len(ch)])
ce qui donne :
.
n
o
L
On a donc cette seconde indexation :
Indicer avec des négatifs
Indice
0
1
2
3
4
5
6
Caractère
p
y
t
h
o
n
.
Caractère
ch[-7]=ch[-len(ch)]
ch[-6]
ch[-5]
ch[-4]
ch[-3]
ch[-2]
ch[-1]
Accès à une sous-chaîne.
Une chaîne de caractères étant affectée à la variable ch,
ch[a:b] sera la chaîne ch[a]+ch[a+1]+ch[a+2]+...+ch[b-1], a et b étant des entiers compris entre 0 et len(ch)-1.
ch = "Langage Python."
sch = "" # affectation de la chaîne vide à la variable sch
for j in range(0,4) :
sch = sch+ch[j]
print(sch)
print(ch[0:4])
print(ch[5:7])
print(ch[5]+ch[6])
On obtient :
Lang
Lang
ge
ge
a désignant une chaîne de caractères, dans l'expression d'une sous-chaîne de la forme a[i:j],
il est possible d'omettre la borne gauche lorsqu'elle vaut 0, ou la borne droite lorsqu'elle vaut len(a)-1.
Il est également possible de définir certaines sous-chaînes de caractères non consécutifs.
t = 'alaclairefontaine'
print("La chaîne complète : ")
print(t)
print("Sous-chaîne constituée des caractères d'indices pairs :")
print(t[::2])
print("Sous-chaîne constituée des caractères d'indices multiples de 3 :")
print(t[::3])
print("Et avec un pas = -1, on parcourt la chaîne à rebours : ")
print(t[::-1])
On obtient :
La chaîne complète :
alaclairefontaine
Sous-chaîne constituée des caractères d'indices pairs :
aalieotie
Sous-chaîne constituée des caractères d'indices multiples de 3 :
aciftn
Et avec un pas = -1, on parcourt la chaîne à rebours :
eniatnoferialcala