Aller au contenu

Définir une chaîne de caractères

Guillemets simples, doubles.

On peut définir une chaîne de caractères en délimitant un message quelconque par des simples quotes '' (ou apostrophes) ou par des guillemets (double quotes) "".

>>> chaine = 'Bonjour le monde.'
>>> chaine
'Bonjour le monde.'
>>> a = "Coucou les loulous."
>>> a
'Coucou les loulous.'

On constate que pour python, il n'y a pas de différence entre les deux choix puisqu'il affiche ensuite dans l'interpréteur de la même façon.

Guillemet triple

Le triple guillemet joue un rôle particulier pour les fonctions (docstring). On pourra aussi l'utiliser pour conserver la "mise en forme" (passage à la ligne notamment).

Dans un interpréteur:

>>> a =  """Un essai pour passer à la ligne.
... Suis-je sur la ligne suivante?
... Et maintenant?
... """
>>> a
'Un essai pour passer à la ligne.\nSuis-je sur la ligne suivante?\nEt maintenant?\n'
>>> print(a)
Un essai pour passer à la ligne.
Suis-je sur la ligne suivante?
Et maintenant?

Les passages à la ligne sont conservés mais sous forme de code \n (signifiant newline) dans l'affichage interpréteur par défaut.

La fonction print par contre interprète les \n et le retour à la ligne se fait effectivement.

On aurait pu déclarer de façon équivalente la chaîne précédente en écrivant:

>>> a = 'Un essai pour passer à la ligne.\nSuis-je sur la ligne suivante?\nEt maintenant?\n'
>>> a
'Un essai pour passer à la ligne.\nSuis-je sur la ligne suivante?\nEt maintenant?\n'
>>> print(a)
Un essai pour passer à la ligne.
Suis-je sur la ligne suivante?
Et maintenant?

Présence d'une apostrophe dans la chaîne

Lorsqu'une apostrophe est présente dans la chaîne, comme dans le message "J'aime Python.", si on délimite la chaîne par une apostrophe, python stoppera la chaîne à la seconde apostrophe rencontrée, ce qui provoquera une erreur.

>>> a = 'J'aime Python.'
  File "<stdin>", line 1
    a = 'J'aime Python.'
              ^
SyntaxError: invalid syntax

Nous disposons de plusieurs façons de contourner le problème.

  • La première consiste à délimiter la chaîne par des guillemets (simples ou triples).
>>> a = "J'aime Python."
>>> a
"J'aime Python."

Il n'y a alors plus d'ambiguïté pour la fermeture de la chaîne.

  • La seconde consiste à échapper l'apostrophe à l'intérieur de la chaîne à l'aide d'un \ (nommée backslash ou encore antislah ou contre-oblique ou barre oblique inversée ou encore barre d'échappement)
>>> a = 'J\'aime Python.'
>>> a
"J'aime Python."

On pourra de même échapper un guillemet lorsqu'on a besoin d'un guillemet dans une chaîne ouverte par des guillemets.

A vous

Écrivez dans l'interpréteur une chaîne délimitée par des guillemets et contenant des guillemets.

Type

Le type d'une chaîne de caractères est str (abréviation de string).

>>> a = "coucou"
>>> type(a)
<class 'str'>

Concaténation

On peut concaténer (ajouter bout à bout) deux chaînes avec l'opérateur +.

>>> a = "Bonjour "
>>> b = "les loulous."
>>> c = a + b
>>> c
'Bonjour les loulous.'

La fonction str permet de convertir certains objets de type non str en string.

>>> a = 7
>>> type(a)
<class 'int'>
>>> str(a)
'7'
>>> type(str(a))
<class 'str'>

On voit dans l'exemple ci-dessus que 7 est de type int (entier) mais que str(7) est en fait la chaîne '7', str(7) est donc de type str.

Utilisation

Dans l'exemple ci-dessous, il faut convertir la valeur désignée par a en str pour pouvoir la concaténer avec le reste de la chaîne (sinon l'opérateur + devrait agir sur une chaîne et un entier: cela n'aurait pas de sens et provoquerait une erreur):

Illustration.

En ne modifiant pas le type, on obtient une erreur:

>>> a = 5 + 2
>>> "Les " + a + " nains."
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
le message can only concatenate str (not "int") to str nous signale qu'on ne peut concaténer (c'est à dire ajouter bout à bout) une chaîne et un entier.

Attention

Vous devez apprendre à décrypter ce type de message qui est suffisamment explicite pour corriger vous-même vos programmes.

et en modifiant le type:

>>> a = 5 + 2
>>> "Les " + str(a) + " nains."
'Les 7 nains.'

On pourra utiliser cette technique lorsqu'on veut incorporer le résultat d'un calcul à une chaîne (la page sur les f-strings vous donnera une autre possibilité pour cela).