Chaines de caractères¶
Nous avons déjà rencontré les chaînes de caractères. Nous avons vus qu'elles s'écrivaient entre guillemets simples ou doubles que l'on pouvait les concaténer avec l'opérateur +
, les comparer entre elles, reproduire plusieurs fois une même chaine avec l'opérateur *
.
Nous allons approfondir notre connaissance sur ce type.
Connaitre la longueur len
d'une chaîne de caractères¶
La longueur d'une chaîne de caractères,c'est-à-dire le nombre de caractères qu'elle contient, s'obtient grâce à la méthode python len
de l'anglais length.
Exemple
>>> len('Bonjour')
7
>>> a = "Au revoir"
>>> len(a)
9
Accéder à un caractère [ ]
d'une chaine de caractères¶
Les caractères d'une chaine de caractères sont indexés à partir de zéro et s'obtiennent en indiquant leur numéro d'indice entre crochets.
Les indices vont donc de 0 à la longueur de la chaine moins 1.
Exemple
>>> s = "abcd"
>>> s[0]
'a'
>>> s[1]
'b'
>>> s[2]
'c'
>>> s[3]
'd'
>>> s[len(s) - 1]
'd'
>>> s[7]
IndexError: string index out of range
s
est une chaîne de 4 caractères. Les indices sont donc compris entre 0 et 3. 3 est la longueur de la chaîne moins un que l'on peut obtenir en saisissant len(s) - 1
. Demander l'accès à un indice qui n'existe pas lève une erreur index out of range
soit indice qui sort de la place d'indices possibles.
On peut utiliser des indices négatifs : -1
correspond alors au dernier caractère, -2
à l'avant dernier caractère, etc.
Exemple
>>> s = "abcd"
>>> s[-1]
'd'
>>> s[-4]
'a'
>>> s[-9]
IndexError: string index out of range
s
. Demander l'accès à un indice qui n'existe pas lève une erreur
Remarque
On ne peut pas modifier un caractère d'un chaine:
>>> t = "pale"
>>> t [1] = 'i'
TypeError: 'str' object does not support item assignment
Comparaison de chaînes de caractères¶
Les opérateurs ==
et !=
renvoient un booléen indiquant si deux chaînes de caractères sont respectivement égales ou différentes :
Exemple
>>> "abcd" == 'abcd'
True
>>> "abcd" != "abcd"
False
>>> "azerty" != 'test'
True
On peut aussi comparer par ordre alphabétique (lexicographique pour être rigoureux) deux chaînes de caractères. Pour cela on utilise les opérateurs de comparaisons: <
, >
, <=
ou >=
Exemple
>>> "bonjour" < "hello"
True
>>> "test" >= "tester"
False
Remarque1
Les majuscules sont classées AVANT les minuscules. En effet, l'«alphabet» de python contient tous les caractères imaginables. Pour comparer deux caractères, python utilise donc leur point de code Unicode, nous en parlerons plus tard, qui respecte l'ordre alphabétique MAIS classe les majuscules avant les minuscules.
>>> 'Python' < 'python'
True
Remarque 2
L'ordre alphabétique n'est pas l'ordre des nombres entiers.
>>> 100 < 99 # Comparaison entre entiers
False
>>> '100' < '99' # Comparaison entre chaînes de caractères
True
>>> "3009" < '0110' # Comparaison de dates format JJMM
False
>>> "0930" < '1001' # Comparaison de dates format MMJJ
True
Si l'on veut que l'ordre de dates correspondent à l'ordre lexicographique il faut les écrire au format AAAAMMJJ