Chaines de caractères en Python

Chaines de caractères en Python

En Python, les chaînes sont des tableaux d'octets représentant des caractères Unicode. Cependant, Python n'a pas de type de données de caractère, un seul caractère est simplement une chaîne d'une longueur de 1. Les crochets peuvent être utilisés pour accéder aux éléments de la chaîne comme pour le cas des tableaux.

Création des chaines

Les valeurs littérales de chaînes de caractères s’écrivent de plusieurs manières en Python. Il est possible d’utiliser indifféremment

  1. Une chaîne entre guillemets simples (apostrophes) ne peut contenir aucun autre caractère 'entre guillemets, sinon une erreur se produirait car le compilateur ne reconnaîtra pas où commencer et terminer la chaîne.
                >>> a='bonjour le monde'
                >>> b='aujourd'hui il fait chaud à marrakech'
                    File "", line 1
                        b='aujourd'hui il fait chaud à marrakech'
                                    ^
                    SyntaxError: invalid syntax
            
  2. Pour surmonter cette erreur, l’utilisation des guillemets doubles est préférable, car elle facilite la création de chaînes avec des guillemets simples.
                >>> b="aujourd'hui il fait chaud à marrakech"
                >>> b
                "aujourd'hui il fait chaud à marrakech"
            
  3. Pour les chaînes contenant des guillemets doubles, il est suggéré d’utiliser des guillemets triples. Parallèlement à cela, les triples guillemets permettent également la création de chaînes multi-lignes.
                >>> b="""bonjour il fait "vraiment" chaud
                ... aujourd'hui à marrakech
                ... c'est l'occasion d'aller à la plage d'essaouira :D """
                >>> b
                'bonjour il fait "vraiment" chaud\naujourd\'hui à marrakech\nc\'est l\'occasion d\'aller à la plage d\'essaouira :D '
            
# chaine avec guillemets double
nom = "ESSADDOUKI"
        
# chaine avec guillemets simple (apostrophes)
prenom = 'mostafa'
        
# chaine contient des guillemets simple
fonction = "Professeur d'informatique"
        
# chaine sur plusieurs lignes contenant des guillemets simple, ou double
biblio = """hey im mostafa from morocco i will
teach u today how
to use string in python
"""
        
print(nom)
print(prenom)
print(fonction)
print(biblio)
        
ESSADDOUKI
mostafa
Professeur d'informatique
hey im mostafa from morocco i will
    teach u today how
    to use string in python

Accéder aux caractères en Python

Python offre une méthode simple pour accéder aux caractères contenus dans une chaîne : une chaîne est manipulée comme une séquence indexée de caractères. Ainsi, chaque caractère est accessible directement par son index ou indice.
Le premier caractère (le plus à gauche) d’une chaîne de longueur n à pour indice 0 et le dernier l’indice n-1. L’indice est mis entre crochets.
Pour accéder à une plage de caractères de la chaîne, la méthode de découpage en tranches (sous-chaine) est utilisée. Le découpage en chaîne est effectué à l'aide d'un opérateur de découpage (deux points : ).
L'indexation permet aux références d'adresses négatives d'accéder aux caractères à l'arrière de la chaîne, par exemple -1 renvoie le dernier caractère, -2 renvoie l'avant-dernier caractère et ainsi de suite.
Lors de l'accès à un index en dehors de la plage, une erreur IndexError est générée. Seuls les entiers peuvent être passés en tant qu'index, float ou d'autres types vont provoquer une erreur TypeError.

fonction = "Professeur d'informatique"

# le premier caractère
print(fonction[0])
        
# le dernier caractère
print(fonction[-1])
        
# l'avant dernier caractère
print(fonction[-2])
        
# sous-chaine entre 4(valeur inclue) et 10 (exclue)
print(fonction[3:10])
        
# sous-chaine entre le 3ème caractère(valeur exclue) et l'avant dernier caractère (valeur exclue)
print(fonction[2:-2])
P
e
u
fesseur
ofesseur d'informatiq  

Suppression / Mise à jour d'une chaîne

En Python, la mise à jour ou la suppression de caractères d'une chaîne n'est pas autorisée. Cela entraînera une erreur car l'affectation ou la suppression d'éléments d'une chaîne n'est pas prise en charge. Bien que la suppression de la chaîne entière est possible avec l'utilisation d'un mot clé del. Cela est dû au fait que les chaînes sont immuables(non modifiable) et que, par conséquent, les éléments d'une chaîne ne peuvent pas être modifiés une fois affectée. Seules les nouvelles chaînes peuvent être réaffectées au même nom.

Mise à jour d'une chaine
    fonction = "Professeur d'informatique"
    fonction[0] = "p"
Traceback (most recent call last):
    File "exe3.py", line 2, in < module >
        fonction[0] = "p"
    TypeError: 'str' object does not support item assignment

mais il y a une astuce pour modifier tout caractère

fonction = "Professeur d'informatique"
fonction = fonction[:1]+"T"+fonction[1:]
print(fonction)
PTrofesseur d'informatique
fonction = "Professeur d'informatique"
fonction = "Teacher "+fonction[10:]
print(fonction)
Teacher  d'informatique   
fonction = "Professeur d'informatique"
fonction = "Teacher of computer science"
print(fonction)
Teacher of computer science
Suppression
fonction = "Professeur d'informatique"
del fonction[2]
print(fonction)
Traceback (most recent call last):
    File "exe3.py", line 2, in < module>
        del fonction[2]
    TypeError: 'str' object doesn't support item deletion

La suppression de la chaîne entière est possible avec l’utilisation du mot-clé del. De plus, si nous essayons d’afficher la chaîne, cela produira une erreur car la chaîne est supprimée et n’est pas disponible pour l’affichage.

fonction = "Professeur d'informatique"
del fonction
print(fonction)
Traceback (most recent call last):
    File "exe3.py", line 3, in < module>
        print(fonction)
    NameError: name 'fonction' is not defined

Formatage des chaînes

Les chaînes en Python peuvent être formatées à l'aide de la méthode format(), qui est un outil très polyvalent et puissant pour la mise en forme des chaînes. Cette méthode contient des accolades {} comme espaces réservés pouvant contenir des arguments en fonction de leur position ou d'un mot clé pour spécifier l'ordre.

chaine = "{} {} {}".format('Bonjour', 'le', 'monde')
print(chaine)
        
chaine2 = "{1} {2} {0}".format('Bonjour', 'le', 'monde')
print(chaine2)
        
chaine2 = "I'm {nom} from {ville}".format(ville='Meknes', nom='Mostafa')
print(chaine2)     
Bonjour le monde
le monde Bonjour
I'm Mostafa from Meknes

Une chaîne peut être justifiée à gauche (<), à droite (>) ou au centre (^) à l'aide de spécificateurs de format, séparés par un signe deux-points (:). Les entiers tels que binaire, hexadécimal, etc. et les flottants peuvent être arrondis ou affichés sous la forme d'exposants à l'aide de spécificateurs de format.

chaine4 = "{0:b}".format(35)
print("Représentation binaire de 16")
print(chaine4)
        
chaine5 = "{0:e}".format(3245.34)
print("forme d'exposant de 3245.34 est")
print(chaine5)
        
chaine6 = "{0:.2f}".format(1/6)
print("arrondis de 1/6 est (2 chiffres après la virgule) ")
print(chaine6)
        
# espacement de 15 caractères
chaine7 = "|{:<15}|{:^15}|{:>15}|".format('Nom', 'Prenom', 'Age')
print("Alignement à gauche, au centre et à droite : ")
print(chaine7)  
Représentation binaire de 16
100011
La représentation de l’exposant de 3245.34 est
3.245340e+03
arrondis de 1/6 est (2 chiffres après la virgule)
0.17
Alignement à gauche, au centre et à droite :
|Nom            |    Prenom     |            Age|

Fonctions de manipulation des chaines

  1. len(chaine): Cette fonction renvoie la longueur de la chaîne.
                chaine = "professeur d'Informatique"
                res = len(chaine)
                print("la taille du chaine est ")
                print(res)
            
                la taille du chaine est 
                25
            
  2. count("sous-chaîne", debut, fin): Cette fonction compte le nombre d'occurrence de la sous-chaîne dans la chaîne entière. Cette fonction prend 3 arguments, une sous-chaîne, une position de début (par défaut, 0) et une position de fin (par défaut, longueur de chaîne).
                chaine = "que de bla bla dans les discours des politiciens"
                res = chaine.count("bla")
                print("nombre d'occurences de bla est ", res)
            
                nombre d'occurences de bla est  2
            
                chaine = "que de bla bla dans les discours des politiciens"
                res = chaine.count("bla",9)
                print("nombre d'occurences de bla est ", res)
            
                nombre d'occurences de bla est  1
            
  3. isalpha(): Cette fonction renvoie true lorsque tous les caractères de la chaîne sont des alphabets, sinon renvoie false.
                chaine = "Bonjour"
                if chaine.isalpha():
                    print("que des caractères")
                else:
                    print("contient d'espaces ou des chiffres")
                    
                chaine2 = "Bonjour le monde"
                if chaine2.isalpha():
                    print("que des caractères")
                else:
                    print("contient d'espaces ou des chiffres")
            
                que des caractères
                contient d'espaces ou des chiffres
            
  4. isalnum(): Cette fonction renvoie true lorsque tous les caractères de la chaîne sont une combinaison de chiffres et / ou d’alphabets, sinon la valeur false.
                chaine = "Id1234"
                if chaine.isalnum():
                    print("que des caractères et des chiffres")
                else:
                    print("contient d'espaces")
                    
                chaine2 = "ID 123"
                if chaine2.isalnum():
                    print("que des caractères et des chiffres")
                else:
                    print("contient d'espaces")
            
                que des caractères et des chiffres
                contient d'espaces
            
  5. isspace():Cette fonction renvoie la valeur true lorsque tous les caractères de la chaîne sont des espaces, sinon la valeur false.
                chaine = "         "
                if chaine.isspace():
                    print("que des espaces")
                else:
                    print("contient d'autres caractères")
                    
                    
                chaine2 = "  -       "
                if chaine2.isspace():
                    print("que des espaces")
                else:
                    print("contient d'autres caractères")
            
                que des espaces
                contient d'autres caractères
            
  6. join ():Cette fonction est utilisée pour joindre une séquence de chaînes mentionnées dans ses arguments avec la chaîne.
                sequence = ['Mostafa', 'Essaddouki', 'Meknes', 'Maroc', "23", "2019"]
                res = '-'.join(sequence)
                print(res)
                    
                res2 = ':'.join(sequence)
                print(res2)
                    
                res3 = '???'.join(sequence)
                print(res3)
            
                Mostafa-Essaddouki-Meknes-Maroc-23-2019
    
                Mostafa:Essaddouki:Meknes:Maroc:23:2019
            
                Mostafa???Essaddouki???Meknes???Maroc???23???2019
            
  7. find("sous-chaine", debut, fin) :Cette fonction est utilisée pour trouver la position du sous-chaine dans une chaîne.Il prend 3 arguments, sous-chaine, index de début( par défaut 0) et index de fin (par défaut taille du chaine).
    chaine = "Professeur d'informatique"
                res = chaine.find("sseur")
                print(res)
                    
                res = chaine.find("sseur", 6)
                print(res)
            
                5
                -1
            
    • Elle renvoie «-1» si la chaîne n'est pas trouvée dans la plage donnée.
    • Elle renvoie la première occurrence de sous-chaine si elle est trouvée.
  8. startswith(“sous-chaine”, debut, fin) : Le but de cette fonction est de retourner true si la fonction commence par la sous-chaine mentionnée (préfixe) sinon false.
                chaine = "Professeur d'informatique"
                res = chaine.startswith("Prof")
                print(res)
                    
                res = chaine.startswith("prof")
                print(res)
            
                True
                False
            
  9. endswith("sous-chaine", debut, fin) :Le but de cette fonction est de retourner true si la fonction se termine par la sous-chaine mentionnée (suffixe) sinon false.
                chaine = "Professeur d'informatique"
                res = chaine.endswith("tique")
                print(res)
                        
                res = chaine.endswith("ion")
                print(res)
            
                True
                False
            
  10. islower(): Cette fonction renvoie true si toutes les lettres de la chaîne sont en minuscule, sinon false.
                chaine = "professeur d'informatique"
                res = chaine.islower()
                print(res)
            
                True
            
  11. isupper(): Cette fonction retourne vrai si toutes les lettres de la chaîne sont en majuscules, sinon faux.
                chaine = "professeur d'informatique"
                res = chaine.isupper()
                print(res)
            
                False
            
  12. lower ():Cette fonction renvoie la nouvelle chaîne avec toutes les lettres converties en minuscules.
                chaine = "Professeur d'InforMatique"
                res = chaine.lower()
                print(chaine)
                print(res)
            
                Professeur d'InforMatique
                professeur d'informatique
            
  13. upper(): Cette fonction renvoie la nouvelle chaîne avec toutes les lettres converties en majuscules.
                chaine = "Professeur d'InforMatique"
                res = chaine.upper()
                print(chaine)
                print(res)
            
                Professeur d'InforMatique
                PROFESSEUR D'INFORMATIQUE
            
  14. swapcase ():Cette fonction permet d’échanger les cas de chaînes, c’est-à-dire que les majuscules sont converties en minuscules et vice versa.
                chaine = "Professeur d'InforMatique"
                res = chaine.swapcase()
                print(chaine)
                print(res)
            
                Professeur d'InforMatique
                pROFESSEUR D'iNFORmATIQUE
            
  15. title (): Cette fonction convertit la chaîne en casse du titre, c'est-à-dire que la première lettre de chaque mot de chaîne est en majuscule et que tous les autres sont en minuscule.
                chaine = "professeur d'Informatique"
                res = chaine.swapcase()
                print(chaine)
                print(res)
            
                professeur d'Informatique
                Professeur D'Informatique
            
  16. strip(): Cette méthode est utilisée pour supprimer tous les caractères de début et de fin mentionnés dans son argument (valeur par défaut est l'espace).
                chaine = "   bonjour le monde         "
                res = chaine.strip()
                print(chaine)
                print(res)
            
                    bonjour le monde
                bonjour le monde
            
  17. lstrip (): Cette méthode est utilisée pour supprimer tous les caractères principaux mentionnés dans son argument.
                chaine = "---bonjour le monde---"
                res = chaine.lstrip()
                print(chaine)
                print(res)
            
                ---bonjour le monde---
                bonjour le monde---
            
  18. rstrip (): Cette méthode est utilisée pour supprimer tous les caractères de fin mentionnés dans son argument.
                chaine = "---bonjour le monde---"
                res = chaine.lstrip()
                print(chaine)
                print(res)
            
                ---bonjour le monde---
                ---bonjour le monde
            
  19. min ("chaîne"): Cette fonction renvoie le caractère minimum dans l'alphabet à partir de la chaîne.
                chaine = "hello"
                res = min(chaine)
                print(res)
            
                e
            
  20. max("chaîne"): Cette fonction renvoie le caractère maximum dans l'alphabet à partir de la chaîne.
                chaine = "hello"
                res = min(chaine)
                print(res)
            
                o
            
  21. replace ("sous-chaine","new-chaine",max): Cette fonction permet de remplacer la sous-chaîne par une nouvelle sous-chaîne "new-chaine" dans la chaîne. Cette fonction a 3 arguments. La chaîne à remplacer, nouvelle chaîne qui remplacerait et valeur max indiquant la limite(par défaut, illimité).
                chaine = "bonjour bonjour bonjour bonjour"
                res = chaine.replace("jour", "soir")
                print(res)
                    
                res2 = chaine.replace("jour", "soir", 2)
                print(res2)
            
                bonsoir bonsoir bonsoir bonsoir
                bonsoir bonsoir bonjour bonjour
            

Rédigé par M. ESSADDOUKI

Many people realize their hearts desires late in life. Continue learning, never stop striving and keep your curiosity sharp, and you will never become too old to appreciate life.