3.3. Chaînes de caractère

Une chaîne de caractères n’est autre qu’une liste de caractères. Les caractères sont juxtaposés et encadrés par des guillemets simples '...' ou doubles "..." [1].

In [1]: type('abcdef')
Out[1]: str

In [2]: "abcdef" == 'abcdef'
Out[2]: True

A nouveau, les opérateurs + et += fonctionnent comme pour les listes.

In [3]: 'abc' + "def"
Out[3]: 'abcdef'

In [4]: s = 'abc'

In [5]: s += "def"

On peut accéder de la même manière aux caractères d’une chaîne qu’aux éléments d’une liste.

In [6]: ma_chaine = "Bonjour Python"

In [7]: ma_chaine[3]
Out[7]: 'j'

In [8]: ma_chaine[2:]
Out[8]: 'njour Python'

In [9]: ma_chaine[:5]
Out[9]: 'Bonjo'

In [10]: ma_chaine[-3]
Out[10]: 'h'

In [11]: ma_chaine[2:9:2]
Out[11]: 'norP'

In [12]: ma_chaine[8:1:-3]
Out[12]: 'Pun'

Par contre, on ne peut pas modifier une chaîne.

In [13]: s = 'abc'

In [14]: s[0] = 'z'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[14], line 1
----> 1 s[0] = 'z'

TypeError: 'str' object does not support item assignment

Encore une fois, la fonction len renvoie la longueur d’une chaîne de caractères.

In [15]: len('Anticonstitutionnellement')
Out[15]: 25

Les chaînes possèdent de nombreuses méthodes : ces méthodes ne modifient jamais la chaîne de caractère mais renvoient une autre chaîne de caractère.

In [16]: ma_chaine = 'Mon nom est Bond. James Bond.'

In [17]: ma_chaine.replace('Bond', 'Toto')
Out[17]: 'Mon nom est Toto. James Toto.'

In [18]: ma_chaine
Out[18]: 'Mon nom est Bond. James Bond.'

In [19]: ma_chaine.upper()
Out[19]: 'MON NOM EST BOND. JAMES BOND.'

In [20]: ma_chaine
Out[20]: 'Mon nom est Bond. James Bond.'