2.4. Chaînes de caractères¶
Une chaîne de caractères est une séquence de caractères Unicode écrite entre guillemets. Les guillemets simples et doubles sont équivalents – choisissez le style qui vous évite d’avoir à échapper les guillemets présents à l’intérieur du texte :
name = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\"" # both styles can be used
same = 'She said "hi"'
Les chaînes entre triples guillemets ("""...""" ou '''...''') s’étendent sur plusieurs lignes et conservent les sauts de ligne tels quels :
banner = """boot ok
firmware v1.28
"""
print(banner)
Sortie
boot ok
firmware v1.28
2.4.1. Séquences d’échappement¶
À l’intérieur d’une chaîne ordinaire, \ introduit un caractère spécial :
\n– saut de ligne\t– tabulation\\– une barre oblique inverse littérale\'/\"– un guillemet littéral (lorsqu’il terminerait sinon la chaîne)\xHH– le caractère dont le code hexadécimal estHH\uHHHH– le point de code UnicodeHHHH
Lorsqu’une chaîne contient de nombreuses barres obliques inverses, préfixez la chaîne littérale avec r pour en faire une chaîne brute (raw). Les barres obliques inverses sont alors prises au pied de la lettre – \n reste deux caractères au lieu d’être remplacé par un saut de ligne :
win_path = r"C:\Users\OpenMV\camera.py"
literal = r"\n is two characters, not a newline"
2.4.2. Concaténation et répétition¶
Deux chaînes se joignent avec + ; une chaîne se répète avec * :
greeting = "Hello, " + name + "!"
line = "-" * 40 # 40-character separator
L’utilisation répétée de + dans une boucle alloue une nouvelle chaîne à chaque itération. Pour construire de plus grandes chaînes à partir de nombreux morceaux, utilisez str.join().
2.4.3. Longueur, indexation et découpage¶
len() renvoie le nombre de caractères d’une chaîne. L’indexation avec [] renvoie une chaîne d’un caractère à la position donnée ; les indices négatifs comptent à partir de la fin :
>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'
Une tranche s[start:stop] renvoie la sous-chaîne allant de la position start jusqu’à stop exclu. Chacune des deux bornes peut être omise pour signifier « le début » ou « la fin », et une troisième valeur optionnelle s[start:stop:step] vous permet de sauter des caractères.
Les positions des tranches se situent entre les caractères. s[2:5] sélectionne les caractères aux positions 2, 3 et 4.¶
>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO' # whole string, reversed
Une tranche hors limites renvoie silencieusement la portion qui existe – s[100:200] est la chaîne vide "", et non une erreur. L’indexation hors limites, en revanche, lève IndexError.
2.4.4. Immuabilité¶
Les chaînes ne peuvent pas être modifiées sur place. Les opérations qui semblent muter une chaîne renvoient en réalité une nouvelle chaîne et laissent l’originale inchangée :
>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV' # unchanged
Pour « changer » une chaîne, réassociez le nom à la nouvelle valeur : name = name.upper().