Le terme "chaîne de caractères" ou "string" en anglais signifie une suite finie de caractères qui ne sont pas
seulement des lettres mais ils peuvent être des nombres, <, un espace, @,*,%, etc,.. . En langage Python, cette suite de caractères est comprise
entre deux quotes doubles (guillemets) ou quotes simples (apostrophes), ces deux symboles sont interchangeables.
Les chaînes de caractères permettent de manipuler des mots, des phrases, des messages.
L’exemple suivant montre comment créer une chaîne de caractères.
t = "string@texte"
print( type (t), t)
t = 'string = texte, initialisation avec apostrophes'
print(type (t), t)
t = "morceau 1" \
"morceau 2"
print (t) # il ne doit rien y avoir après le symbole \,
# pas d’espace ni de commentaire
t = """première ligne
seconde ligne""" # chaîne de caractères qui s’étend sur deux lignes
print (t)
Le résultat de ce petit programme est le suivant :
string@texte
string = texte, initialisation avec apostrophes
morceau 1morceau 2
première ligne
seconde ligne
La troisième chaîne de caractères créée lors de ce programme s’étend sur deux lignes.
Il est parfois plus commode d’écrire du texte sur deux lignes plutôt que de le laisser
caché par les limites de fenêtres d’affichage. Python offre la possibilité de couper le
texte en deux chaînes de caractères recollées à l’aide du symbole \ à condition que ce
symbole soit le dernier de la ligne sur laquelle il apparaît. De même, lorsque le texte
contient plusieurs lignes, il suffit de les encadrer entre deux symboles """ ou """ pour
que l’interpréteur Python considère l’ensemble comme une chaîne de caractères et non comme
une série d’instructions.
Remarque
Pour insérer un guillemet dans une chaîne de caractères encadrée elle-même par des guillemets,
il faut le faire précéder du symbole \. La séquence \" est appelée un extra-caractère (voir tableau ci-dessous).
Liste des extra-caractères les plus couramment utilisés à l’intérieur d’une chaîne de caractères :
\"
guiellemet
\'
apostrophe
\n
passage à la ligne
\\
insertion du symbole \
\%
pourcentage, ce symbole est aussi un caractère spécial
\t
tabulation
\r
retour à la ligne, peu usité, il a surtout son importance lorsqu'on passe d'un système Windows
à Lunix car Windows l'ajoute automatiquement à tous ses fichiers textes.
Remarque : Préfixe "r", chaîne de caractères
Il peut être fastidieux d’avoir à doubler tous les symboles \ d’un nom de fichier.
Il est plus simple dans ce cas de préfixer la chaîne de caractères par r de façon à éviter que l’utilisation du symbole \ ne désigne
un caractère spécial. Les deux lignes suivantes sont équivalentes :
s = "C:\\Users\\Lycee\\exemple.txt"
s = r"C:\Users\Lycee\exemple.txt"
Sans la lettre "r", tous les \ doivent être doublés, dans le cas contraire, Python peut avoir des effets indésirables selon le
caractère qui suit ce symbole.
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 Dupont, l'affichage obtenu est :
Bonjour Dupont.
Après l'addition, la multiplication.
Avec les nombres, l'opération 4+4+4+4+4+4 se note plus brièvement 4*6.
Il en va de même avec les chaînes de caractères en langage python.
t='cou'
print(t*6)
L'affichage obtenu est :
coucoucoucoucoucou
Retour sur le typage
Un même opérateur a des effets différents suivant le type des objets auxquels il s'applique.
print(5+2)
print('5'+'2')
L'affichage obtenu est :
7
52
Dans le premier cas, python ajoute les entiers 5 et 2 et obtient 7.
Dans le second cas, python concatène les chaînes de caractères '5' et '2' et obtient donc '52'.
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).
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.
t=input("Entrez l'année de votre date de naissance : ")
print(type(t))
En supposant que l'utilisateur ait entré 1998, 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=2014-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().
t=input("Entrez l'année de votre date de naissance : ")
t=int(t) # transformation de t en entier
age=2015-t
print("Vous avez ", age, "ans")
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 cast : ", type(age) )
age=str(age)
print("Type de la variable age après le cast : ", type(age) )
On obtient l'affichage :
Type de la variable age avant le cast : <class 'int'>
Type de la variable age après le cast : <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("Python est un langage"))
On obtient :
21
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."
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 ...
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.
Le tableau suivant présente quelques fonctions applicables aux chaînes de caractères.
Fonction
Résultat
t.count(sub , st , end)
Retourne le nombre d’occurrences de la chaîne de caractères sub,
les paramètres par défaut st et end permettent de réduire la recherche entre les caractères d’indice st et
end exclu. Par défaut, st est nul tandis que end correspond à la fin de la chaîne de caractères.
t.find(sub, st , end)
Retourne la position de la sous-chaîne de caractères sub dans la chaîne
de caractères t, les paramètres par défaut st et end ont la même signification que ceux de la fonction count.
Cette fonction retourne -1 si la recherche n’a pas abouti.
t.isalpha()
Retourne True si tous les caractères de la chaîne t sont des lettres, False sinon.
t.isdigit()
Retourne True si tous les caractères de la chaîne t sont des chiffres, False sinon.
t.replace(txt1, txt2,co)
Retourne une copie de la chaîne de caractères en remplaçant toutes les occurrences
de la chaîne text1 par txt2. Si le paramètre optionnel co est renseigné, alors seules les co premières occurrences seront remplacées.
t.split(sep , n)
Découpe la chaîne de caractères en se servant de la chaîne sep comme délimiteur. Si le paramètre
n est renseigné, au plus n coupures seront effectuées.
t.strip(s)
Supprime les espaces au début et en fin de chaîne. Si le paramètre s est renseigné, la fonction strip supprime
tous les caractères qui font partie de s au début et en fin de chaîne.
t.upper()
Remplace les minuscules par des majuscules dans la chaîne de caractères t.
t.lower()
Remplace les majuscules par des minuscules dans la chaîne de caractères t.
t.capitalize()
Remplace le premier caractère par une majuscule dans la chaîne de caractères t.
t.join(words)
Fait la somme d’un tableau de chaînes de caractères (une liste ou un T-uple). La chaîne de caractères sert
de séparateur qui doit être ajouté entre chaque élément du tableau words.
t = "le langage python est intéressant"
t = t.upper () # mise en lettres majuscules
i = t.find ("PYTHON") # on cherche "PYTHON" dans t
print (i)
print (t.count ("AN"))
print (t.count ("AN", 9))
On obtient :
11
2
1
La sous-chaîne "PYTHON" se trouve à la 11-ième position dans la chaîne de caractères "LE LANGAGE PYTHON EST INTÉRESSANT".
La sous-chaîne "AN" est répétée deux fois dans la chaîne de caractères "LE LANGAGE PYTHON EST INTÉRESSANT".
A partir du 9-ième caractère de la chaîne "LE LANGAGE PYTHON EST INTÉRESSANT", la sous-chaîne "AN" n'est répétée qu'une seule fois.