Les chaînes de caractères (type str) sont des séquences de caractères utilisées
pour représenter du texte. Ce cours présente les opérations réalisables dessus.
Concaténation
La concaténation combine (c’est-à dire assemble bout-à-bout) deux chaînes
de caractères : chaine1 + chaine2 ; exemple :
s1 = "Hello"
s2 = "World"
resultat = s1 + " " + s2
print(resultat)
Multiplication
La multiplication consiste à combiner plusieurs fois (à répéter) une chaîne
de caractères : chaine * nb_fois ; exemple :
print("Aita ! " * 3)
Caractères spéciaux
Les caractères spéciaux sont des caractères de contrôle ; ils sont indiqués par une lettre ; exemples :
tpour tabulation,npour saut de ligne,rpour retour charriot,bpour effacement du caractère précédent (backspace)
Pour les distinguer des caractères alphabétiques, ils doivent être échappés,
c’est-à-dire préfixé par le caractère \ ; exemples :
print("Ia ora na !\nE aha te huru?")
print("Résultat faux\b\b\b\bjuste !")
Longueur d’une chaine
La longueur d’une chaîne de caractères est le nombre de caractères qui la
composent (y compris les espaces et caractères spéciaux) : len(chaine) ; exemple :
x = len("Ia ora na")
print(x)
Remarque : dans certains langages de programmation (en C par exemple), la
fin d’une chaîne est indiquée par le caractère nul (\0) ; l’espace mémoire
occupé est donc d’un caractère de plus que la longueur de la chaîne ; exemple :
char ch[10 + 1] = "Mauruuru !"; //11 caractères avec `\0`
//ch[10] == `\0`
Extraction d’un caractère
Il est possible d’extraire un caractère d’une chaîne en indiquant son indice
(sa position) ; soit n la longueur de la chaîne, les indices sont numérotés
de 0 (premier caractère) à n - 1(dernier caractère) ; exemples :
print("Exemple"[1])
ch = "Autre exemple"
print(ch[0])
Extraction de sous-chaîne
Il est également possible d’extraire une sous-chaîne (partie d’une chaîne)
en indiquant les indices de début et de fin : chaine[debut:fin] ;
- le caractère à l’indice
finest exclu de la sous-chaîne ; - si l’indice
debutest omis, il est remplacé par 0 — extraction à partir du début ; - si l’indice
finest omis, il est remplacé par la longueur de la chaîne — extraction jusqu’à la fin ; - si l’indice est négatif, on part de la fin de la chaîne (de droite à gauche).
Exemples :
ch = "Python"
sous_chaine = ch[1:4]
print(sous_chaine)
print(ch[:3] + " " + ch[3:])
Codage ASCII
A chaque caractère correspond un code ASCII :
48 pour "0", 49 pour "1"… 65 pour "A", 66 pour "B"… 97 pour
`"a"…
- pour obtenir le caractère correspondant à un code ASCII :
caractere = chr(code_ascii); - pour obtenir le code ASCII d’un caractère :
code_ascii = ord(caractere).
Exemple :
code_ascii = ord('A')
print(code_ascii)
code_ascii = code_ascii + 32 #A->a
caractere = chr(code_ascii)
print(caractere)
Remarque : le codage ASCII ne comprend pas de caractères accentués ; ces derniers sont pris en charge par la norme UTF.
Ces opérations combinent des opération de base pour réaliser des tâches plus complexes.
Recherche
La fonction chaine.find(sous_chaine) renvoie l’indice de la première occurrence
de la sous-chaîne dans la chaîne, ou -1 si elle n’est pas trouvée ; cette
fonction est souvent combinée à l’extraction d’une sous-chaîne.
Il est possible de préciser à partir de quel indice chercher : chaine.find(sous_chaine, indice).
Il est également possible de rechercher depuis la fin (dernière occurence),
en remplaçant find par rfind.
Exemples :
ch = "Texte avec des espaces"
idx1 = ch.find(" ")
print(idx1)
idx2 = ch.find(" ", idx1 + 1) #cherche le deuxième espace
print(idx2)
idx3 = ch.rfind(" ")
print(idx3)
print("Programmation".find("code"))
Parcours des caractères
Il est possible d’itérer sur chaque caractère d’une chaîne, c’est-à-dire la parcourir caractère par caractère ; deux méthodes sont possibles :
- le parcours direct, “pour chaque caractère de la chaîne" ; exemple :
chaine = "abc"
for caractere in chaine:
print(caractere)
- le parcours par indice (universel), “pour chaque indice de caractère" ; exemple :
chaine = "def"
n = len(chaine) #nombre de caractères
for i in range(n): #ou directement: range(len(chaine))
caractere = chaine[i] #i est l'indice
print(caractere) #ou directement: print(chaine[i])
Méthodes utilitaires fréquentes
chaine.isdigit(): renvoieTruesi la chaîne ne contient que des chiffres (Falsesinon) ;chaine.upper()/chaine.lower(): met la chaîne en majuscules / minusculeschaine.strip(): supprime les espaces en début et fin de chaînechaine.replace(sous_chaine, par_nouvelle_chaine): remplace toutes les occurrences d’une sous-chaîne par une nouvelle chaîne.s.split(delimiteur): découpe la chaîne en une liste (un tableau) de sous-chaînes au niveau du délimiteur.
ch = input("Chaîne : ")
if ch.isdigit():
print("La chaîne représente un nombre entier.")
else:
print("La chaîne n'est pas un nombre entier.")
print("Pomare".upper())
print(" Nana ".strip() + " !")
ch1 = "Bonjour mesdames ! Bonjour messieurs !"
print(ch1.replace("Bonjour", "Ia ora na"))
ch2="Un texte est constitué de mots…"
mots = ch2.split(" ")
print(mots)
Les tableaux sont traités dans le cour suivant.