Les chaînes de caractères appelées string en Python représentent un type fondamental de la programmation. Il s’agit d’une séquence de caractères alphabétiques, numériques ou de symboles. Lors du traitement de texte, de données structurées ou de données provenant de sources externes, les Python strings sont très fréquemment utilisés.
Ainsi, si vous souhaitez vous lancer dans la programmation en Python, il est nécessaire que vous sachiez les manipuler. Les strings sont immuables, ce qui signifie qu’une fois créés, ils ne peuvent pas être modifiés. Ils peuvent cependant être manipulés à l’aide de différentes méthodes. Explorons ces différentes fonctionnalités.
Qu'est ce que Python string ?
Il est possible de définir un Python string de différentes manières : les guillemets simples ou doubles mais aussi les triples guillemets. Utiliser trois guillemets simples ou trois guillemets doubles permet de prendre en compte les sauts de ligne dans l’affichage de la chaîne de caractères.
Il est possible d’affecter un Python string à une variable afin d’optimiser le code et ne pas le surcharger avec des chaînes de caractères trop longues qui se répéteraient tout au long du code. On affiche simplement un Python string à l’aide de la fonction print(). Attention, si on souhaite afficher une chaîne de caractères contenant des guillemets simples ou doubles, une SyntaxError sera retournée. Pour pallier à ce problème, il faut utiliser les triples guillemets lors de la définition du string ou bien des séquences d’échappement (escape sequences). Elles sont introduites par un anti-slash et très utiles pour afficher ces caractères spéciaux, nous y reviendrons plus en détail dans une prochaine section.
Comment indexer avec la fonction string ?
Il est important d’avoir en tête qu’un Python string fonctionne comme une liste. On peut donc avoir accès à un caractère particulier de la chaîne de caractères à l’aide des crochets comme dans l’exemple ci-dessous. Comme pour les listes, on peut indexer un Python string avec des nombres négatifs. Ainsi, x[-1] renvoie le dernier élément du string. Rappelez-vous bien que l’indexation en Python commence à 0. Pour retourner une certaine sous-séquence d’un Python string, on utilise le slicing. La commande x[start:end] retourne la sous-chaîne de caractères commençant à l’indice start jusqu’à l’indice end non inclus.
Comparaison de chaînes de caractères
Premièrement, il est important de noter que chaque caractère d’un Python string est associé à une valeur ASCII ( American Standard Code for Information Interchange ). Par exemple, le caractère « A » a une valeur ASCII de 65 alors que « a » est associé à la valeur 97. Ainsi, la comparaison sera sensible à la casse du caractère. Pour comparer deux Python strings, on utilise les opérateurs habituels ==, !=, <, >, >= ou encore <=. Les opérateurs vont en fait comparer les valeurs ASCII associées aux deux chaînes de caractères. Ainsi, « Ananas » aura une plus petite valeur ASCII que « ananas » et la commande “Ananas” < “ananas” renverra True.
Méthodes associées
Un grand nombre de méthodes différentes peuvent être réalisées sur les Python strings.
len(x) | Retourne la longueur de la chaîne de caractères. |
---|---|
‘Hello’ in x | Teste l’appartenance d’un caractère ou d’une chaîne de caractères à x. Il renvoie un booléen, True si ‘Hello’ est dans x ou False sinon. |
x.isalpha() | Retourne True si le Python string est composé de lettres alphabétiques uniquement. |
x.isdecimal() | Retourne True si x est uniquement composé d’entiers. Attention , cette méthode ne détecte pas les entiers négatifs et les nombres décimaux non entiers |
x.startswith(“start”) / x.endswith(“start”) | Teste si la chaîne de caractère commence ( resp. termine ) par “start”. |
x.find(“test”) | Cherche le string “test” dans la chaîne de caractères x et retourne l’indice où il commence ou -1 s’il n’est pas trouvé dans la chaîne. |
x.count(sub, beg, end) | Compte le nombre d'occurrences de sub dans x entre beg et end. |
Opérations sur les Python strings
À défaut de pouvoir modifier une chaîne de caractère, il existe plusieurs opérations qui permettent de créer de nouvelles chaînes à partir de chaînes déjà existantes.
x.replace(“old”, “new”) | retourne le string x où toutes les occurrences de “old” ont été remplacées par “new”. |
---|---|
x.split( ) | Permet de subdiviser un Python string en fonction du caractère passé en argument, ici un espace. Cette opération retourne une liste des éléments divisés. |
x + y | Concatène les deux chaînes de caractères x et y, elle renvoie donc un string composé de la chaîne x suivie de y. |
x*2 | Crée un nouveau string composé de la répétition de la chaîne de caractères x deux fois. |
capitalize(x) | Met le premier caractère de x en majuscule. |
x.lower() / x.upper() | Convertit x en lettres minuscules et inversement |
max(x) / min(x) | Retourne le caractère de x le plus proche du début de l’alphabet et inversement. |
x[::-1] | Inverse le Python string |
Suppression
Comme mentionné précédemment, les Python strings sont immuables. Une fois créés, ils ne peuvent plus être modifiés et on ne peut pas non plus supprimer un certain caractère par exemple. Comme dans l’exemple ci-dessous, si on souhaite remplacer le premier caractère de x, cela renverra une erreur.
La seule option qui s’offre alors à vous si votre chaîne de caractères est erronée, est de la supprimer. Cela s’effectue avec la commande del.
Caractères d’échappement
Comme mentionné précédemment, les caractères d’échappement ou escape séquences sont introduits par un antislash \. Ils permettent l’insertion de certains caractères spéciaux comme les guillemets par exemple, ou d’effectuer des opérations spécifiques. Ainsi, pour aller à la ligne, on peut utiliser « \n », pour effectuer une tabulation « \t » ou encore « \\ » permet d’afficher un backslash.
Formatage
Le formatage des Python strings correspond à des méthodes de mise en forme. La concaténation présentée plus haut est une forme de formatage. Ce n’est cependant pas la méthode la plus utile car elle ne permet d’assembler seulement des données de même type. Ainsi, si on veut concaténer un string avec des variables numériques, il faudra convertir les variables numériques en Python string à l’aide de la commande str().
La méthode format constitue une façon de formater les Python strings beaucoup plus simplement. Les strings placés en arguments de la méthode format() seront remplacés, dans l’ordre aux endroits ou il y a des accolades. Cette méthode, contrairement à la concaténation, prend en charge différents types de variables. On peut spécifier à l’intérieur des accolades l’indice de l’argument à utiliser ou encore le nom de la variable à utiliser parmi les arguments.
La version 3.6 de Python a introduit une nouvelle fonctionnalité : les f-strings. Cette méthode permet une meilleure lisibilité et propose également de meilleures performances que la méthode format. Pour utiliser cette méthode, il faut insérer la lettre « f » avant la définition d’une variable de type Python string. Il est alors possible, tout comme avec la méthode format, d’ajouter des variables de différents types dans la chaîne de caractères à l’aide des accolades. Cela permet également d’utiliser les différentes méthodes associées aux Python strings explicitées précédemment à l’intérieur des accolades. Si vous utilisez les f strings, il faudra bien faire attention à définir les variables appelées avant, ce problème ne se pose pas si vous utilisez la méthode format.
Anciennement le formatage se faisait à l’aide de la commande %, vous pouvez donc encore retrouver ce type de formatage même si cette méthode est maintenant obsolète.
Conclusion
Les Python strings sont des types très largement répandus en programmation en Python, notamment pour la manipulation de données textuelles, l’affichage de résultats ou du traitement de texte. Vous avez désormais une bonne maîtrise de ce type et de ses subtilités.
Pour apprendre à maîtriser entièrement Python, les formations DataScientest vous proposent une approche basée sur le « learning by doing » qui feront de vous des experts en programmation et sciences des données et vous délivreront un diplôme en tant que Data Scientist, Data Analyst ou encore Data Engineer.