CPGE OUJDA SUP
les chaînes de caractères
Les chaînes de caractères peuvent être considérées comme des listes.
>>> animaux = "girafe tigre"
>>> print(animaux)
’girafe tigre’
>>> print(len(animaux))
12
>>> print(animaux[3])
’a’
Nous pouvons donc utiliser certaines propriétés des listes comme les tranches :
>>> animaux = "girafe tigre"
>>> print(animaux[0:4])
’gira’
>>> print(animaux[9:])
’gre’
>>> print(animaux[:-2])
’girafe tig’
A contraire des listes, les chaînes de caractères présentent toutefois une différence notable, ce sont des listes non modifiables. Une fois définie, vous ne pouvez plus modifier un de ses éléments. Par conséquent, si vous voulez modifier une chaîne, vous êtes obligés d'en construire une nouvelle. Pour cela, n'oubliez pas que les opérateurs de concaténation (+) et de duplication (*) peuvent vous aider. Vous pouvez également générer une liste, qui elle est modifiable, puis revenir à une chaîne.
Caractères spéciaux
Il existe certains caractères spéciaux comme le \n que nous avons déjà vu (pour le retour à la ligne). Le \t vous permet d'écrire une tabulation. Si vous voulez écrire un guillemet simple ou double (et que celui-ci ne soit pas confondu avec les guillemets de déclaration de la chaîne de caractères), vous pouvez utiliser \' ou \" ou utiliser respectivement des guillemets doubles ou simple pour déclarer votre chaîne de caractères.
>>> print ("Un retour a la ligne\n puis une tabulation\t, puis un guillemet\"")
Un retour a la ligne
puis une tabulation , puis un guillemet"
>>> print (’J\’imprime un guillemet simple’)
J’imprime un guillemet simple
>>> print ("Un brin d’ADN")
Un brin d’ADN
>>> print (’Python est un "super" langage’)
Python est un "super" langage
Lorsqu'on souhaite écrire un texte sur plusieurs lignes, il est très commode d'utiliser les guillemets triples permettant de conserver le formatage (notamment les retours à la ligne) :
>>> x = ’’’souris
… chat
… abeille’’’
>>>print( x)
’souris\nchat\nabeille’
>>> print (x)
souris
chat
abeille
Méthodes associées aux chaînes de caractères
Voici quelques méthodes spécifiques aux objets de type string :
>>> x = "girafe"
>>> x.upper()
’GIRAFE’
>>> print(x)
’girafe’
>>> ’TIGRE’.lower()
’tigre’
Les fonctions lower() et upper() passent un texte en minuscules et en majuscules respectivement. On remarque que l'utilisation de ces fonctions n'altère pas la chaîne de départ, mais renvoie la chaîne transformée.
Pour mettre en majuscule la première lettre seulement, vous pouvez faire :
>>> x[0].upper() + x[1:]
’Girafe’
Ou encore plus simple avec la fonction Python adéquate :
>>> x.capitalize()
’Girafe’
Il existe une méthode associée aux chaînes de caractères qui est particulièrement pratique, la fonction split() :
>>> animaux = "girafe tigre singe"
>>> animaux.split()
[’girafe’, ’tigre’, ’singe’]
>>> for i in animaux.split():
… print( i)
…
girafe
tigre
singe
La fonction split() découpe la ligne en champs, en utilisant comme séparateur les espaces ou les tabulations. Il est possible de modifier le séparateur de champs, par exemple :
>>> animaux = "girafe:tigre:singe"
>>> animaux.split(":")
[’girafe’, ’tigre’, ’singe’]
La fonction find() recherche une chaîne de caractères passée en argument.
>>> animal = "girafe"
>>> animal.find(’i’)
1
>>> animal.find(’afe’)
3
>>> animal.find(’tig’)
-1
Si l'élément recherché est trouvé, alors l'indice du début de l'élément dans la chaîne de caractères est renvoyé. Si l'élément n'est pas trouvé, alors la valeur -1 est renvoyée.
Si l'élément recherché est trouvé plusieurs fois, seul l'indice de la première occurrence est retourné :
>>> animaux = "girafe tigre"
>>> animaux.find("i")
1
On trouve aussi la fonction replace() :
>>> animaux = "girafe tigre"
>>> animaux.replace("tigre", "singe")
’girafe singe’
>>> animaux.replace("i", "o")
’gorafe togre’
Enfin, la fonction count() compte le nombre d'occurrences d'une chaîne de caractères passée en argument :
>>> animaux = "girafe tigre"
>>> animaux.count("i")
2
>>> animaux.count("z")
0
>>> animaux.count("tigre")
1
Conversion de types
Dans tout langage de programmation, on est souvent amené à convertir les types, c'est-à-dire passer d'un type numérique à une chaîne de caractères ou vice-versa. En Python, rien de plus simple avec les fonctions int(), float() et str(). Pour vous en convaincre, regardez ces exemples :
>>> i = 3
>>> str(i)
’3’
>>> i = ’456’
>>> int(i)
456
>>> float(i)
456.0
>>> i = ’3.1416’
>>> float(i)
3.1415999999999999.
Conversion d'une liste de chaînes de caractères en une chaîne de caractères
La conversion d'une liste de chaînes de caractères en une chaîne de caractères est un peu particulière puisqu'elle fait appel à la fonction join().
>>> seq = ["A", "T", "G", "A", "T"]
>>> seq
[’A’, ’T’, ’G’, ’A’, ’T’]
>>> "-".join(seq)
’A-T-G-A-T’
>>> " ".join(seq)
’A T G A T’
>>> "".join(seq)
’ATGAT’
Les éléments de la liste initiale sont concaténés les uns à la suite des autres et intercalés par un séparateur qui peut être n'importe quelle chaîne de caractères (ici, nous avons utilisé un tiret, un espace et rien).
Attention, la fonction join() ne s'applique qu'à une liste de chaînes de caractères.
>>> maliste = ["A", 5, "G"]
>>> " ".join(maliste)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence