• Aucun résultat trouvé

Les chaînes de caractères

Nous avons déjà travaillé avec des chaînes de caractères et pour cause, jusqu'à maintenant, nous nous contentons d'écrire des programmes qui fonctionnent en console. Vous allez voir que l'on peut faire plein de choses intéressantes sur les chaînes de caractères !

Dans cette partie, nous allons donc voir : Un rappel sur les chaînes de caractères Quelques fonctions bien pratiques Un exemple avec la création d'une syntaxe

Vous verrez que vous ne pourrez plus vous passez des chaînes de caractères après ce chapitre ! Bien les maîtriser vous permettra d'écrire et de lire des fichiers facilement par exemple, et ça, vous en aurez certainement besoin un jour ou l'autre ! Alors, au boulot !

Rappel

Nous avons utilisé des chaînes de caractères dans la plupart des chapitres précédents mais nous n'avons rien fait de très spécial jusqu'à maintenant ! Nous avons vu que ce sont des séquences, c'est-à-dire des suites ordonnées de caractères. Voyons en quelques essais dans le shell ce que nous avons vu jusqu'à maintenant :

Code : Python

>>> chaine = """Peuh !""" >>> chaine[0]

'P'

>>> chaine * 3

'Peuh !Peuh !Peuh !' >>> str(218)

'218'

Et c'est à peu près tout ce que l'on a vu jusqu'à maintenant... Effectivement, c'est le strict nécessaire pour réussir à écrire quelque chose en console ! Il existe d'autres petites opérations bien pratiques pour la manipulation des séquences en générales qui s'appliquent donc aux chaînes de caractères. La première est le découpage qui vous permet d'accéder à une sous partie de votre séquence et la deuxième est le test d'appartenance d'un élément à une séquence. Voyons ce que cela donne en shell :

Code : Python

>>> chaine = "Peuh ! Je suis une chaine !" >>> chaine[3:]

'h ! Je suis une chaine !' >>> chaine[:5] 'Peuh ' >>> chaine[3:5] 'h ' >>> "uh" in chaine True

>>> "Je" not in chaine

False

Alors, le découpage se fait un peu de la même manière que l'accès à un élément d'une séquence par son indice. Ainsi, vous mettez entre crochets ([]) les indices auxquels vous voulez accédez et il vous retourne une chaîne de caractères tronquée comme vous le souhaitez. Remarquez que si aucun indice de départ ou de fin n'est spécifié, par défaut, ils seront définis au premier et au dernier indice de votre séquence.

Les opérateurs in (dans) et not in (pas dedans) vous permette de tester la présence d'un élément dans votre séquence. Ainsi, vous pouvez constater que 'uh' et 'Je' font effectivement partie de la séquence chaine. Ces opérateurs peuvent être utilisés pour créer des booléens dans la définition des structures conditionnelles ou dans les boucles while sans aucun problème. En général, leur lecture est simple car on compose presque une phrase en langage naturel (pour peu que l'on parle anglais...) !

Nous allons voir maintenant, que comme pour les fichiers, il est possible d'appliquer des fonctions aux chaînes de caractères.

Fonctions sur les chaînes

La première chose à faire lorsque l'on souhaite en connaître un peu plus sur ce que l'on peut faire avec certains objets, c'est de consulter la documentation ! Je vous donne donc déjà le lien de la documentation des types intégrées avec les fonctions que

vous pourrez appliquer à vos chaines de caractères (str) :

http://docs.python.org/py3k/library/stdtypes.html

Voyons maintenant ensemble quelques opérations plus ou moins utiles sur les chaînes de caractères. Pour cela, nous

effectuerons quelques tests dans le shell. Nous allons commencer par les fonctions qui s'appliquent aux séquences en général et leurs effets sur les chaînes de caractères.

Code : Python >>> chaine = 'Peuh !' >>> len(chaine) 6 >>> min(chaine) ' ' >>> max(chaine) 'u' >>> chaine2 = 'Pouet!' >>> zip(chaine, chaine2) <zip object at 0x01F9C120>

>>> for element in zip(chaine, chaine2) :

print(element) ('P', 'P') ('e', 'o') ('u', 'u') ('h', 'e') (' ', 't') ('!', '!')

Quelques explications sur ces fonctions s'imposent :

len : diminutif de length (longueur), retourne la longueur de la séquence, c'est-à-dire le nombre d'éléments qui la

composent.

min : diminutif de minimum, retourne le plus petit élément de la séquence (dans notre cas, c'est l'ordre alphabétique qui

est considéré)

max : diminutif de maximum, retourne le plus grand élément de la séquence (considère aussi l'ordre alphabétique) zip : crée les couples d'éléments de même indice des séquences passées en argument. On remarque d'ailleurs ici que c'est

un type d'objet zip qui est créé. Cet objet est itérable et j'utilise alors une boucle for pour en afficher le contenu. Ces fonctions peuvent s'appliquer à toutes les séquences et ne sont pas spécifiques aux chaînes de caractères.

Nous allons tester des fonctions qui s'appliquent, elles, uniquement aux chaînes de caractères et dont on doit spécifier à quelle chaîne elle s'applique.

Code : Python >>> chaine = "peuh !" >>> chaine.capitalize() 'Peuh !' >>> chaine.center(18) ' peuh ! ' >>> chaine.count("peu") 1 >>> chaine.find('uh') 2 >>> chaine.replace("p","f") 'feuh !' >>> chaine.split() ['peuh', '!'] >>> chaine.split("h") ['peu', ' !'] >>> chaine.upper() 'PEUH !' >>> chaine

'peuh !'

Il n'y a ici qu'un petit échantillon des fonctions que vous pouvez utilisez sur les chaînes de caractères. Si vous désirez une liste exhaustive, il faudra vous référer à la documentation ! Mais voyons tout de même ce que j'ai fait ici :

capitalize ("majusculer") : retourne la même chaine mais avec une majuscule pour la première lettre.

center (centrer) : retourne la chaîne entourée d'espaces et centrée dans un ensemble dont la taille est donnée en

paramètre. Ici, ma chaîne fait 6 caractères et je demande de centrer sur 18, la fonction rajoute alors 6 espaces de chaque côté de ma chaîne.

count (compter) : retourne le nombre d'occurrences de la chaîne passée en argument présentes dans la chaîne à laquelle la

fonction est appliquée.

find (trouver) : retourne l'indice de la première occurrence de la chaîne cherchée passée en argument.

replace (remplacer) : retourne la chaîne de caractères avec toutes les occurrences de la première chaîne passée en

argument remplacée par la deuxième chaîne passée en argument.

split (séparer) : retourne une liste de chaînes de caractères correspondant aux différentes parties de la chaîne initiale

coupée par la chaîne passée en argument. Par défaut, c'est le caractères ' ' (espace) qui est utilisé.

lower/upper (plus petit/plus grand) : retourne la chaîne tout en minuscule/majuscule.

Ces fonctions ne modifient en rien la chaîne de départ. Elles se contentent de retourner un résultat qu'il faudra stocker dans une variable si vous désirez vous en servir plus tard ! J'ai d'ailleurs fait afficher la valeur de ma chaîne à la fin pour que vous en soyez convaincu !

Vous voyez donc que l'on peut faire de nombreuses opérations sur nos chaînes de caractères. Nous allons maintenant voir par un exemple, à quoi peuvent servir ces fonctions.

Documents relatifs