Les chaînes sont des séquences de caractères non mutables.
On ne peut donc pas modifier un ou plusieurs caractères. Si on ajoute un caractère (ou une autre chaîne) par concaténation à une chaîne existante, le résultat est la création d’une nouvelle chaîne à une nouvelle adresse en mémoire.
Les chaînes sont délimitées par des guillemets simples 'bonjour') doubles "bonjour") ou triples ('''bonjour''').
L’utilisation de guillemets triples permet de faire courir une chaîne de caractères sur plusieurs lignes, comme on l’a vu dans la section consacrée aux “chaînes de documentation” (docstrings).
La possibilité de choisir entre les délimiteurs simples ou doubles permet d’insérer des guillemets dans une chaîne (on pourra par exemple former la chaîne "c'est l'automne").
Les opérations sur les séquences non mutables s’appliquent aux chaînes :
-
appartenance (avec
inch etnot inch), -
concaténation (avec ch
+ch’) et répétition (avec ch*n), -
longueur avec
len(ch), accès indexé et coupes (avec ch [ i ], ch [ i : j ], ch [ i : j : k ]) -
minimum/maximum (
maxetmin) -
recherche de x par ch
.index(x)et occurences par ch.count(x).
Tout comme les listes et les tuples, les chaînes sont itérables, et peuvent donc être parcourues dans une boucle for.
Comme on le voit ici, on concatène des chaînes avec l’opérateur + (ou un simple espace), et on les répète par * :
|
1 2 3 4 |
>>> 'abc' + 'uvwxyz' # concaténation de deux chaînes 'abcuvwxyz' >>> 'abc' * 5 # répétition d'une même chaîne 'abcabcabcabcabc' |
Voici quelques exemples d’opérations possibles sur les chaînes de caractères :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
>>> st = 'abxyztcabaabaabcabw' # définition d'une chaîne >>> for c in st: print(ord(c),end=' ') # boucle d'affichage des codes des caractères 97 98 120 121 122 116 99 97 98 97 97 98 97 97 98 99 97 98 119 >>> len(st), st[2:5], st[-1] # lecture de caractères par leurs indices (19, 'xyz', 'w') >>> st[::-1] # inverser l'ordre des caractères 'wbacbaabaabactzyxba' >>> ('abc' in st, 'abcd' in st, 'ab' not in st) # appartenance ou non (True, False, False) >>> st.count('aba'), st.index('aba') # nombre d'occurences, première occurence (2,7) >>> st.index('aba',8) # 1ère occurence à partir de la position 8 10 >>> st[2]='h' # impossible de modifier un caractère <...> TypeError: 'str' object does not support item assignment >>> list('abcbde') # la liste des caractères d'une chaîne ['a', 'b', 'c', 'b', 'd', 'e'] |
Les chaînes possèdent un très grand nombre de méthodes qui leur sont propres ; ces méthodes ont souvent un comportement par défaut qui peut être personnalisé en précisant la valeur de paramètres facultatifs. Comme il est impossible de tout citer, voici une simple sélection :
(pour plus de détails consulter : http://docs.python.org/3.3/library/stdtypes.html#text-sequence-type-str)
Voir également la section suivante pour une analyse détaillée de certaines méthodes importantes.
str.endswith(suffix) |
renvoie True si la chaîne str se termine par la chaîne suffix |
str.startswith(prefix) |
renvoie True si la chaîne str commence par la chaîne prefix |
str.isalnum() |
renvoie True si str est formée uniquement de caractères alphanumériques |
str.isalpha() |
renvoie True si str est formée uniquement de caractères alphabétiques |
str.isdigit() |
renvoie True si str est formée uniquement de chiffres |
str.lower() |
renvoie une chaîne obtenue par passage en minuscules |
str.upper() |
renvoie une chaîne obtenue par passage en majuscules |
str.strip() |
renvoie une chaîne obtenue en supprimant les blancs au début et à la fin |
str.replace(old,new[,n]) |
renvoie une chaîne obtenue en remplaçant old par new, au plus n fois |
str.find(sub) |
indice de la première occurence de sub (et -1 si non trouvé) |
str.index(sub) |
comme find, mais erreur ValueError si non trouvé |
str.rfind(sub) |
indice de la dernière occurence de sub (et -1 si non trouvé) |
str.center(n[,c]) |
renvoie str centrée dans une chaîne de longueur n, bordée par des c |
str.ljust(n[,c]) |
renvoie str justifiée à gauche dans une chaîne de longueur n, complétée par des c |
str.rjust(n[,c]) |
renvoie str justifiée à droite dans une chaîne de longueur n, complétée par des c |