Aller au contenu
Accueil » Manipuler les chaînes de caractères en Python

Manipuler les chaînes de caractères en Python

    manipuler les chaines de caractères en python

    Nous allons ici discuter des chaînes de caractères et comment les manipuler. Vous utiliserez très souvent les chaînes de caractères, surtout quand vous manipulerez des fichiers. Il est donc primordial de savoir travailler avec. Le type de variable associé aux chaînes de caractères est le type « string ».

    Le type « string » peut se définir comme une suite quelconque de caractères. Ces caractères peuvent être des lettres, des chiffres ou des symboles.

    Manipulation de base d’une chaîne de caractère

    Création de la variable

    Pour créer une variable de type « string », il faut assigner du texte entre guillemets ou entre apostrophes.

    ma_chaine = "Voici une chaine de caracteres entre guillemets"
    autre_chaine = 'Voici une autre chaine entre apostrophes'
    type(ma_chaine)
    >>> str
    type(autre_chaine)
    >>> str
    Python

    Vous pouvez utiliser soit les guillemets soit l’apostrophe pour définir une chaîne de caractère. La seule condition est d’utiliser le même symbole pour ouvrir et fermer la chaîne. Si votre variable possède une apostrophe, vous pourrez alors la créer en utilisant les guillemets, et vice versa. Autrement, si vous votre chaîne de caractère est quand même définie entre apostrophes et que vous en avez dans la chaîne, vous pouvez rajouter un « backslash » \ devant le caractère.

    ma_chaine = "Python c'est facile !"
    autre_chaine = 'La réponse est "oui" !'
    ma_chaine = 'Python c\'est facile !'
    ma_chaine
    >>> "Python c'est facile"
    Python

    Rajout d’un saut de ligne / tabulation

    Si vous voulez insérer des sauts de ligne dans votre chaîne de caractères, nous retrouvons à nouveau le caractère backslash \. En rajoutant « \n » dans la chaîne, la combinaison sera interprétée comme un saut de ligne. Un moyen mnémotechnique de s’en rappeler est de penser à « new line ». Pour la tabulation, c’est la combinaison « \t ».

    chaine1 = 'Voici une chaine de caractère \nsur deux lignes'
    chaine2 = "Voic une chaine \t avec une tabulation"
    print(chaine1)
    >>> Voici une chaine de caractère 
    >>> sur deux lignes
    print(chaine2)
    >>> Voic une chaine 	 avec une tabulation
    Python

    Attention à la casse !

    La casse ??? C’est quoi ça la casse ? La casse est le respect des lettres minuscules et majuscules. En effet, les lettres ne sont pas codées de la même manière si elles sont en minuscules ou majuscules. Si vous les comparez, vous verrez que Python considère qu’elles sont différentes.

    chaine1 = 'Python'
    chaine2 = 'python'
    chaine1 == chaine2
    >>> False
    Python

    Les opérations sur les chaînes de caractères

    Dans cette section, nous allons voir quelques opérations utiles sur les chaînes de caractères.

    Concaténer de chaînes de caractères

    Pour concaténer deux chaînes de caractères, rien de plus facile, il suffit d’utiliser l’opérateur « + » comme pour une addition.

    chaine1 = "Bienvenue"
    chaine2 = " à tous !"
    chaine = chaine1 + chaine2
    chaine
    >>> 'Bienvenue à tous !'
    Python

    Quand on sait qu’on peut utiliser l’opérateur « + » pour concaténer des chaînes de caractères, on est tenté d’utiliser la soustraction également. Malheureusement, Python ne l’accepte pas. Egalement, il est possible de répéter une chaîne avec l’opérateur  » * « .

    chaine = "abc"
    repetition = chaine * 4
    repetition
    >>> 'abcabcabcabc'
    Python

    Longueur d’une chaine

    Pour manipuler une chaîne de caractères, vous aurez certainement besoin de connaitre sa taille. Pour se faire, vous avez la fameuse fonction « len() ».

    chaine = "abc"
    len(chaine)
    >>> 3
    Python

    Accéder aux caractères individuels

    Une chaîne de caractères est une variable constituée de données simples. Cette donnée simple est tout simplement un caractère. En fonction des circonstances, vous aurez besoin de traiter la chaîne de caractères dans son ensemble ou d’accéder à une partie de celle-ci. Python considère la chaîne de caractères comme une séquence. Ainsi, chaque caractère est accessible via son indice. Cette manipulation est similaire aux listes. J’explique le fonctionnement des listes dans cet article. Pour accéder à un caractère, il suffit alors d’utiliser le nom de la variable suivi de son indice entre crochets. On rappelle que, comme pour les listes, les indices comme à 0.

    string = "abc"
    string[1]
    >>> 'b'
    Python

    Voici une image qui illustre comment accéder aux différents caractères de la chaîne.

    accéder aux caractères d'une chaîne de caractères en Python

    Tout comme les listes, vous pouvez aussi extraire une portion de la chaîne de caractères. Voici plusieurs exemples.

    string = "abcdef"
    string[1:3]
    >>> 'bc"
    string[:3]
    >>>'abc"
    string[3:]
    >>> 'def'
    string[-1]
    >>> 'f'
    string[-3:]
    >>> 'def'
    
    Python

    Conversion d’une chaîne de caractères en valeur numérique

    Lorsque vous récupérerez des données depuis des fichiers texte, il est fort possible que le type de variable soit une chaîne de caractère même si vous savez que c’est un nombre. Les fonctions « int() » et « float() » vous permettront de récupérer la valeur numérique.

    nombre_entier = "123"
    nombre_entier + 1
    >>> TypeError: can only concatenate str (not "int") to str
    int(nombre_entier) + 1
    >>> 124
    
    nombre_reel = "123.456"
    float(nombre_reel) + 1
    >>> 124.456
    Python

    Les opérateurs « in » et « not in »

    Ces deux opérateurs ont déjà été vus dans l’article sur les listes. L’utilisation de ces opérateurs permet de renvoyer une valeur booléenne en testant si la première variable se trouve dans la seconde (ou l’inverse). Attention ! Ces opérateurs sont sensibles à la casse (voir plus haut pour la définition).

    "voiture" in "ma super voiture peugeot 308"
    >>> True
    "Peugeot" in "ma super voiture peugeot 308" # attention à la casse avec le P majuscule
    >>> False
    "avion" not in "ma super voiture peugeot 308" # Il est vrai que "avion" n'est pas dans la variable
    >>> True
    Python

    Les méthodes utiles pour les chaînes de caractères

    upper() / lower()

    Ces deux méthodes permettent de mettre toute la chaîne de caractères en majuscule ou minuscule respectivement. Elles sont très pratiques pour éviter des erreurs dues à la casse et cela peut vous éviter d’avoir à écrire des lignes de code pour gérer les différents cas.

    var = "Ma suPer Variable EcriTe BizArrement"
    var.upper()
    >>> 'MA SUPER VARIABLE ECRITE BIZARREMENT'
    var.lower()
    >>> 'ma super variable ecrite bizarrement'
    Python

    isalpha() / isnumeric()

    Ces deux méthodes pourront être très utiles pour vérifier que vous travaillez sur un chaîne de caractères avec des lettres ou des nombres.

    var = "MaSuperVariable"
    var_espace = "Ma Super Variable"
    var.isalpha()
    >>> True
    var_espace.isalpha() # Renvoie Faux à cause des espaces => voir la méthode replace()
    >>> False
    
    "123".isnumeric()
    >>> True
    "123.456".isnumeric() # la méthode ne prend pas en compte les nombres réels
    >>> False
    
    Python

    find(sub[, start[, end]]) / rfind(sub[, start[, end]])

    Si vous souhaitez savoir où se trouve une sous-chaîne dans une chaîne de caractères, la méthode find() est faite pour vous. Elle renvoie l’indice où se trouve la première occurrence.

    replace(oldnew[, count])

    Cette méthode est particulièrement utile lorsque vous faites de l’édition de texte. Par exemple, vous parcourez un fichier ligne par ligne et vous voulez remplacer chaque occurrence de « toto » par « titi ».

    ligne = "C'est l'histoire de toto"
    ligne.replace("toto","titi")
    >>> "C'est l'histoire de titi"
    
    Python

    Le dernier argument « count » permet de définir le nombre d’occurrences à remplacer. si par exemple, on trouve trois fois « toto » dans la ligne et que vous avez défini l’argument « count » à 2, le dernier « toto » ne sera pas remplacé.

    join(iterable) / split(sep=Nonemaxsplit=- 1)

    La méthode joint() permet de concaténer une liste de chaînes avec un séparateur défini. Si vous voulez écrire un fichier CSV, cette méthode peut grandement simplifier votre code. La méthode split() réalise l’opération inverse. Elle divise la chaîne en plusieurs sous chaînes. Par défaut, le séparateur est l’espace mais l’utilisateur peut définir un séparateur personnalisé.

    ma_chaine = 'Je vous présente plusieurs méthodes pour manipuler les chaines'
    liste = ["Python", "c'est", "formidable"]
    sep = " "
    sep.join(liste)
    >>> "Python c'est formidable"
    
    ma_chaine.split()
    >>> ['Je', 'vous', 'présente', 'plusieurs', 'méthodes', 'pour', 'manipuler', 'les', 'chaines']
    
    ma_chaine = 4*'abcABC' + 'abc'
    ma_chaine
    >>> 'abcABCabcABCabcABCabcABCabc'
    ma_chaine.split("ABC")
    >>> ['abc', 'abc', 'abc', 'abc', 'abc']
    Python

    strip([chars]), rstrip([chars]), lstrip([chars])

    Parfois vous avez besoin de supprimer les espaces, les tabulations et les retours à la ligne dans les chaînes de caractères. Ces méthodes peuvent vous aider. La particularité de ces méthodes est qu’elles ne s’appliquent qu’au début et/ou à la fin de la chaîne de caractère.

    texte = "     Bonjour à tous     "
    texte.strip()
    >>> 'Bonjour à tous'
    texte.lstrip()
    >>> 'Bonjour à tous     '
    texte.rstrip()
    >>> '     Bonjour à tous'
    Python

    Vous pouvez bien sûr utiliser l’argument « char » dans la fonction. Par défaut, si on ne met rien c’est l’espace qui est supprimé. Il faut savoir que l’argument « char » n’est pas une chaîne de caractères qui est recherché dans la variable. Ce sont toutes les combinaisons de caractères de l’argument qui seront recherchées et supprimées. Retenez que cette méthode est surtout utile pour les espaces.

    'mississippi'.rstrip('ipz')
    >>> 'mississ'
    'Monty Python'.rstrip(' Python')
    >>> 'M'
    Python

    Et pour finir sur les chaînes de caractères avec Python

    J’ai essayé de vous présenter les fonctionnalités principales pour manipuler les chaînes de caractères. D’autres méthodes existent comme par exemple islower() et isupper() ou startswith() et endswith(). Je vous invite à aller regarder dans la documentation officielle pour plus d’informations. Mais avec ce que je vous ai présenté, vous devriez pouvoir faire beaucoup de choses.

    Merci de m’avoir lu, n’hésitez pas à me laisser un commentaire !
    A bientôt, Benjamin

    Si vous avez aimé l'article, vous êtes libres de le partager ! :)

    Laisser un commentaire